두 날짜 사이의 날짜를 선택하는 SQL 쿼리
는 나나 a a a가 있다start_date
★★★★★★★★★★★★★★★★★」end_date
이 두 날짜 사이의 날짜 목록을 받고 싶습니다.누가 제 질문에서 실수를 지적하는 것을 도와줄 수 있나요?
select Date,TotalAllowance
from Calculation
where EmployeeId=1
and Date between 2011/02/25 and 2011/02/27
서 ★★★★Date
는 입니다.datetime
★★★★★★ 。
이 두 날짜는 작은 따옴표 사이에 넣어야 합니다.
select Date, TotalAllowance from Calculation where EmployeeId = 1
and Date between '2011/02/25' and '2011/02/27'
또는 사용할 수 있습니다.
select Date, TotalAllowance from Calculation where EmployeeId = 1
and Date >= '2011/02/25' and Date <= '2011/02/27'
첫 번째 날짜는 포함되지만 두 번째 날짜는 제외됩니다. 사실상 '2011/02/27 00:00:00'이기 때문입니다.
은 값이 "/"/"이다"가 됩니다.date 00:00:00.000
내의 , ''을 <
.
select Date,TotalAllowance from Calculation where EmployeeId=1
and Date between '2011/02/25' and '2011/02/27 23:59:59.999'
또는
select Date,TotalAllowance from Calculation where EmployeeId=1
and Date >= '2011/02/25' and Date < '2011/02/28'
또는
select Date,TotalAllowance from Calculation where EmployeeId=1
and Date >= '2011/02/25' and Date <= '2011/02/27 23:59:59.999'
시간이 00:00:00:00.000인 경우 2011/02/28의 일부 기록을 반환할 수 있으므로 다음을 사용하지 마십시오.
select Date,TotalAllowance from Calculation where EmployeeId=1
and Date between '2011/02/25' and '2011/02/28'
이것을 시험해 보세요.
select Date,TotalAllowance from Calculation where EmployeeId=1
and [Date] between '2011/02/25' and '2011/02/27'
날짜 값은 문자열로 입력해야 합니다.
에도 확실하게 하기 위해 Server 2008을 사용합니다Date
이후 버전에서는 예약된 단어이므로 이스케이프해야 합니다.
시간이 없는 날짜는 기본 자정이므로 올바른 값이 없을 수 있습니다.
select * from table_name where col_Date between '2011/02/25'
AND DATEADD(s,-1,DATEADD(d,1,'2011/02/27'))
먼저 here here here here here here here here here here here here here here here here here here here here here here here here here here here here here here here 。을 사용하다2011-02-28 00:00:00
끝날짜가 1초면 1초면 끝날짜가 2011-02-27 23:59:59
이렇게 하면 지정된 간격 사이의 모든 날짜를 얻을 수 있습니다.
output:
2011/02/25
2011/02/26
2011/02/27
select * from test
where CAST(AddTime as datetime) between '2013/4/4' and '2014/4/4'
-- 데이터 타입이 다른 경우
이 쿼리는 현재 날짜와 다음 세 날짜 사이의 값을 가져오는 데 유효합니다.
SELECT * FROM tableName WHERE columName
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 3 DAY)
이렇게 하면 현재 날짜에 3일간의 버퍼가 추가됩니다.
이것은 매우 오래된 것이지만, 데이트에 관한 많은 경험을 가지고 있기 때문에, 이것을 고려해 보는 것이 좋을지도 모릅니다.따라서 일부 사용자(및 일부 데이터베이스/컴퓨터)는 이 날짜를 2016년 12월 11일 또는 2016년 11월 12일로 읽을 수 있습니다.또한 MySQL 데이터베이스에 공급된 16/11/12는 2016년 11월 12일로 내부적으로 변환되며, 영국 지역 설정 컴퓨터에서 실행되는 Access 데이터베이스는 2012년 11월 16일로 해석하여 저장합니다.
따라서 날짜 및 데이터베이스와 상호 작용할 때마다 명시적인 정책을 수립했습니다.그래서 나는 항상 다음과 같이 나의 쿼리와 프로그래밍 코드를 제공한다.
SELECT FirstName FROM Students WHERE DoB >= '11 Dec 2016';
또한 Access는 #를 받아들이기 때문에 다음과 같은 점에 유의하십시오.
SELECT FirstName FROM Students WHERE DoB >= #11 Dec 2016#;
그러나 MS SQL Server는 사용할 수 없기 때문에 위와 같이 항상 " "를 사용합니다.두 데이터베이스 모두 이를 허용합니다.
그리고 코드의 변수에서 날짜를 가져올 때 항상 다음과 같이 결과를 문자열로 변환합니다.
"SELECT FirstName FROM Students WHERE DoB >= " & myDate.ToString("d MMM yyyy")
이 글을 쓰는 이유는 일부 프로그래머들이 본래의 변환을 감지하지 못할 수도 있다는 것을 알고 있기 때문입니다.13일 미만의 날짜에는 오류가 없습니다.단, 결과가 다를 뿐입니다.
질문에 대해서는 마지막 날짜에 하루를 더하여 다음과 같이 비교합니다.
dated >= '11 Nov 2016' AND dated < '15 Nov 2016'
## 사이에 날짜를 삽입해 보십시오.다음은 예를 제시하겠습니다.
#2013/4/4# and #2013/4/20#
그것은 나에게 효과가 있었다.
select Date,TotalAllowance
from Calculation
where EmployeeId=1
and convert(varchar(10),Date,111) between '2011/02/25' and '2011/02/27'
24시간 후 날짜로 아침에 시작해서 밤에 끝나는 경우 다음과 같은 내용을 추가해야 합니다.
declare @Approval_date datetime
set @Approval_date =getdate()
Approval_date between @Approval_date +' 00:00:00.000' and @Approval_date +' 23:59:59.999'
SELECT CITY, COUNT(EID) OCCURENCES FROM EMP
WHERE DOB BETWEEN '31-JAN-1900' AND '31-JAN-2900'
GROUP BY CITY
HAVING COUNT(EID) > 2;
이 쿼리는 DOB가 지정된 직원 시간 범위 내에 있는 발생 횟수가 3개 이상인 도시를 찾습니다.
나는 찬성할 것이다.
select Date,TotalAllowance from Calculation where EmployeeId=1
and Date >= '2011/02/25' and Date < DATEADD(d, 1, '2011/02/27')
는 '''라는 것이다''>=
와 "시작일"이 됩니다.<
종료일을 제외하기 때문에 종료일에 유닛을 1개 추가합니다.예를 들어 다음과 같이 몇 개월 동안 조정할 수 있습니다.
select Date, ... from ...
where Date >= $start_month_day_1 and Date < DATEADD(m, 1, $end_month_day_1)
현재 날짜와 과거 3일 사이의 선택 날짜에 대한 최상의 쿼리:
select Date,TotalAllowance from Calculation where EmployeeId=1 and Date BETWEEN
DATE_SUB(CURDATE(), INTERVAL 3 DAY) AND CURDATE()
현재 날짜와 다음 3일 사이의 선택 날짜에 대한 최상의 쿼리:
select Date,TotalAllowance from Calculation where EmployeeId=1 and Date BETWEEN
CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 3 DAY)
다음 예제를 확인합니다.작동 및 비작동 모두.
select * from tblUser Where
convert(varchar(10),CreatedDate,111) between '2015/04/01' and '2016/04/01' //--**Working**
또는
select * from tblUser Where
(CAST(CreatedDate AS DATETIME) between CAST('2015/04/01' AS DATETIME) And CAST('2016/4/30'AS DATETIME)) //--**Working**
또는
select * from tblUser Where
(YEAR(CreatedDate) between YEAR('2015/04/01') And YEAR('2016/4/30'))
//--**Working**
AND는 동작하지 않습니다.
select * from tblUser Where
Convert(Varchar(10),CreatedDate,111) >= Convert(Varchar(10),'01-01-2015',111) and Convert(Varchar(10),CreatedDate,111) <= Convert(Varchar(10),'31-12-2015',111) //--**Not Working**
select * from tblUser Where
(Convert(Varchar(10),CreatedDate,111) between Convert(Varchar(10),'01-01-2015',111) And Convert(Varchar(10),'31-12-2015',111)) //--**Not Working**
이 SQL을 사용해 보십시오.
select * from employee where rec_date between '2017-09-01' and '2017-09-11'
dates ex:에 구문을 사용합니다.
WHERE aa.AuditDate>='1 September 2015'
AND aa.AuditDate<='30 September 2015'
★★★★★★에dates
Select
*
from
Calculation
where
EmployeeId=1 and Date between #2011/02/25# and #2011/02/27#;
할 수 수에 큰 "between"을 사용하시기 . 그래서 나는 모든 사람들이 사용하는 것을 추천한다.datediff
:
qry = "SELECT * FROM [calender] WHERE datediff(day,'" & dt & "',[date])>=0 and datediff(day,'" & dt2 & "',[date])<=0 "
여기서 calender는 Table, dt는 시작 날짜 변수, dt2는 종료 날짜 변수입니다.
이 스레드에는 레코드의 시간 값이 0이 아닌 날짜 범위를 기준으로 선택할 때 잘못된 답변과 습관이 많이 있습니다. 여기에는 기록 시 두 번째로 높은 답변이 포함됩니다.
이런.Date between '2011/02/25' and '2011/02/27 23:59:59.999'
것도 요.Date >= '2011/02/25' and Date <= '2011/02/27 23:59:59.999'
이유를 알아보려면 직접 사용해 보십시오.
DECLARE @DatetimeValues TABLE
(MyDatetime datetime);
INSERT INTO @DatetimeValues VALUES
('2011-02-27T23:59:59.997')
,('2011-02-28T00:00:00');
SELECT MyDatetime
FROM @DatetimeValues
WHERE MyDatetime BETWEEN '2020-01-01T00:00:00' AND '2020-01-01T23:59:59.999';
SELECT MyDatetime
FROM @DatetimeValues
WHERE MyDatetime >= '2011-02-25T00:00:00' AND MyDatetime <= '2011-02-27T23:59:59.999';
어느 경우든 두 행이 모두 반환됩니다.보고 있는 날짜 값이 이전 날짜/시간 유형이라고 가정하면 날짜/시간이 가장 가까운 밀리초까지 정확하지 않기 때문에 밀리초 값이 999인 날짜/리터럴은 다음 초의 밀리초 000으로 반올림됩니다.997이나 000을 가질 수 있지만 그 사이에 아무것도 없습니다.
밀리초 값인 997을 사용할 수 있으며, 이는 datetime 2 값만 사용할 필요가 있다고 가정할 때 효과가 있습니다. datetime 2 값은 사용할 필요가 없습니다.이 시나리오에서는 예를 들어 시간 값이 23:59:59.99872인 레코드가 누락됩니다.예를 들어 처음에 제시된 코드에서는 시간 값이 23:59:59.9995인 레코드도 누락됩니다.
같은 답변으로 제공되는 다른 솔루션이 훨씬 더 좋습니다.Date >= '2011/02/25' and Date < '2011/02/28'
여기에서는 datetime 또는 datetime2 컬럼 중 어느 쪽을 참조하고 있는지에 관계없이 동작합니다.
제가 제기하고 싶은 또 다른 핵심은 날짜 및 시간 리터럴입니다. '2011/02/25'
권장하지 않습니다.작업 중인 시스템의 설정에 따라서는 25개월이라는 시간이 없기 때문에 오류가 발생할 수 있습니다.모든 지역 및 언어 설정에 사용할 수 있는 리터럴 형식을 사용합니다.'2011-02-25T00:00:00'
.
실제로 가장 정확한 결과를 얻으려면 모든 SQL 날짜가 형식이어야 합니다.
두 가지:
따옴표를 사용하다
마지막 날(24일에 끝남)을 반드시 포함시켜 주세요.
select Date, TotalAllowance from Calculation where EmployeeId=1 and "2011/02/25" <= Date and Date <= "2011/02/27"
한다면Date
는 Date Time 입니다.
범위 체크는 하한과 상한을 명확하게 표시하기 때문에 자주 하는 편입니다.날짜 형식은 문화마다 매우 다양합니다.날짜로 해석하는 것이 좋을지도 모릅니다.사용하다DATE_FORMAT( Date, 'Y/m/d')
.
(메시지: 사용방법STR_TO_DATE
그리고.DATE_FORMAT
패러다임을 바꿉니다.)
그것은 나에게 효과가 있었다.
SELECT
*
FROM
`request_logs`
WHERE
created_at >= "2022-11-30 00:00:00"
AND created_at <= "2022-11-30 20:04:50"
ORDER BY
`request_logs`.`id` DESC
/****** Script for SelectTopNRows command from SSMS ******/
SELECT TOP 10 [Id]
,[Id_parvandeh]
,[FirstName]
,[LastName]
,[RegDate]
,[Gilder]
,[Nationality]
,[Educ]
,[PhoneNumber]
,[DueInMashhad]
,[EzdevajDate]
,[MarriageStatus]
,[Gender]
,[Photo]
,[ModifiedOn]
,[CreatorIp]
From
[dbo].[Socials] where educ >= 3 or EzdevajDate >= '1992/03/31' and EzdevajDate <= '2019/03/09' and MarriageStatus = 1
SELECT Date, TotalAllowance
FROM Calculation
WHERE EmployeeId = 1
AND Date BETWEEN to_date('2011/02/25','yyyy-mm-dd')
AND to_date ('2011/02/27','yyyy-mm-dd');
언급URL : https://stackoverflow.com/questions/5125076/sql-query-to-select-dates-between-two-dates
'programing' 카테고리의 다른 글
여러 열에 걸쳐 DISTINCT 카운트 (0) | 2023.04.07 |
---|---|
표에서 특정 열의 첫 번째 문자를 삭제하려면 어떻게 해야 합니까? (0) | 2023.04.07 |
SQL Server 인덱스 - 오름차순 또는 내림차순, 어떤 차이가 있습니까? (0) | 2023.04.07 |
TEX란TIMAGE_ON [Primary]? (0) | 2023.04.07 |
String을 사용하는 이유포맷? (0) | 2023.04.07 |