where 절의 날짜/시간
다음에서 12/20/2008을 선택하려면 어떻게 해야 합니까?where
sql의 절?
서버는 SQL server 2005입니다.
select * from tblErrorLog
where errorDate = '12/20/2008'
WHERE datetime_column >= '20081220 00:00:00.000'
AND datetime_column < '20081221 00:00:00.000'
우선 날짜/시간에 대해 ISO-8601 표준 형식을 사용하는 것이 좋습니다. SQL Server의 언어 및 지역 설정에 상관없이 작동합니다.ISO-8601은YYYYMMDD
형식 - 공백 없음, 대시 없음 - 데이터만:
select * from tblErrorLog
where errorDate = '20081220'
두 번째로 SQL Server 2005를 인식해야 합니다.DATETIME
항상 시간을 포함합니다.날짜 부분만 정확하게 일치하는지 확인하면 0:00:00 시간과 일치하는 행만 표시되고 다른 행은 표시되지 않습니다.
언급된 권장 범위 쿼리를 사용하거나 SQL Server 2008에서DATE
날짜 시간만 - 또는 다음과 같은 확인 작업을 수행할 수 있습니다.
select * from tblErrorLog
where DAY(errorDate) = 20 AND MONTH(errorDate) = 12 AND YEAR(errorDate) = 2008
당신에게 가장 적합한 것.
이 쿼리를 자주 수행해야 하는 경우에는 다음을 표준화할 수 있습니다.DATETIME
날짜만 포함하거나 일, 월 및 년에 대해 계산된 열을 추가할 수 있습니다.
ALTER TABLE tblErrorLog
ADD ErrorDay AS DAY(ErrorDate) PERSISTED
ALTER TABLE tblErrorLog
ADD ErrorMonth AS MONTH(ErrorDate) PERSISTED
ALTER TABLE tblErrorLog
ADD ErrorYear AS YEAR(ErrorDate) PERSISTED
그러면 더 쉽게 질문할 수 있습니다.
select * from tblErrorLog
where ErrorMonth = 5 AND ErrorYear = 2009
등등.이러한 필드는 계산되고 지속되기 때문에 항상 최신 상태이고 항상 최신 상태이며 지속되기 때문에 필요한 경우 색인화할 수도 있습니다.
어떤 데이터베이스를 사용하고 있는지는 말하지 않지만 MS SQL Server에서는
WHERE DateField = {d '2008-12-20'}
타임스탬프 필드인 경우 범위가 필요합니다.
WHERE DateField BETWEEN {ts '2008-12-20 00:00:00'} AND {ts '2008-12-20 23:59:59'}
SQL Server DateTime을 사용한다고 가정합니다.
참고: BETHIN은 범위의 양쪽 끝을 포함하므로 기술적으로 이 패턴은 잘못될 수 있습니다.
errorDate BETWEEN '12/20/2008' AND '12/21/2008'
이러한 시간 범위에 대해 제가 선호하는 방법은 다음과 같습니다.
'20081220' <= errorDate AND errordate < '20081221'
공통 인덱스(Range Scan, SARGable, 기능 없음)와 함께 작동하며 SQL Server의 시간 세분성에 의존하지 않고 다음날 자정에 올바르게 클리핑합니다(예: 23:59:59.997).
변환 함수를 사용하여 특정 날짜의 모든 항목을 가져옵니다.
Select * from tblErrorLog where convert(date,errorDate,101) = '12/20/2008'
자세한 내용은 CAST 및 CONVERT를 참조하십시오.
select * from tblErrorLog
where errorDate BETWEEN '12/20/2008' AND DATEADD(DAY, 1, '12/20/2008')
명확한 이해를 위해 아래 쿼리 사용
/****** Script for SelectTopNRows command from SSMS ******/
SELECT *
FROM [dbo].[PublishedInfo]
where PublishedDate >= '2022-02-14T11:31:16.5299166+00:00'
언급URL : https://stackoverflow.com/questions/1947436/datetime-in-where-clause
'programing' 카테고리의 다른 글
wp_remote_post가 SSL 연결 시 오류를 반환함 (0) | 2023.07.20 |
---|---|
프록시 뒤에 배포된 springdoc-openapi-ui(Swager UI)의 "Generated server url"이 잘못됨 (0) | 2023.07.20 |
matplotlib: 색상 막대 및 텍스트 레이블 (0) | 2023.07.20 |
가져오기 오류: psycopg2라는 모듈이 없습니다. (0) | 2023.07.20 |
숫자가 들어 있는 문자열을 올바르게 정렬하는 방법은 무엇입니까? (0) | 2023.07.20 |