[SQL] DATETIME을 비교하고 DATE 시간 부분을 무시하고
SQLDATETIME을 비교하고 DATE 시간 부분을 무시하고
I 열 [날짜] DATETIME2 유형 (0) 인 두 개의 테이블이있다.
나는 시간 부분 (시간 + 분 + 초)을 버리고, 오직 그들의 날짜 부품 (일 + 월 + 년)에 의해 두 개의 레코드를 비교해야합니다.
내가 어떻게 할 수 있습니까?
해결법
-
==============================
1.단지 날짜 부분을 비교하는 SQL Server 2008의 새로운 날짜 데이터 형식으로 CAST를 사용하여
단지 날짜 부분을 비교하는 SQL Server 2008의 새로운 날짜 데이터 형식으로 CAST를 사용하여
IF CAST(DateField1 AS DATE) = CAST(DateField2 AS DATE)
-
==============================
2.마크의 대답에 작은 단점은 모두 datefields 당신은 어떤 인덱스를 활용하지 못할 수 있습니다 의미 배역이었다이다.
마크의 대답에 작은 단점은 모두 datefields 당신은 어떤 인덱스를 활용하지 못할 수 있습니다 의미 배역이었다이다.
날짜 필드에 인덱스 혜택을 누릴 수있는 쿼리를 작성 할 필요가 경우에 따라서, 다음 (오히려 뒤얽힌) 접근 방식이 필요하다.
PS : 전용 (SQL 서버의 이전 버전에서) 날짜를 추출하는 또 다른 수단은 날짜가 내부적으로 표현하는 방법의 트릭을 사용하는 것입니다.
-
==============================
3.비록 나는 올바른로 표시 대답을 upvoted. 나는이에 비틀 거리는 사람을 위해 몇 가지에 터치 싶었다.
비록 나는 올바른로 표시 대답을 upvoted. 나는이에 비틀 거리는 사람을 위해 몇 가지에 터치 싶었다.
일반적으로, 당신은 혼자가 날짜 값에 구체적으로 필터링하는 경우. MS는 YMD 또는 Y-m-D의 언어 중립 포맷을 사용하도록 권장.
상기 방법을 사용하여 날짜 비교를하는 것은 간단하다. 다음, 인위적인 예를 생각해 보자.
--112 is ISO format 'YYYYMMDD' declare @filterDate char(8) = CONVERT(char(8), GETDATE(), 112) select * from Sales.Orders where CONVERT(char(8), OrderDate, 112) = @filterDate
이 효율적으로 인덱스를 사용하는 SQL 서버를 방지 할 수 있기 때문에 완벽한 세계에서, 필터링 된 컬럼에 어떤 조작을 수행하는 것은 피해야한다. 즉, 데이터가 당신이있는 거 저장은 오직 날짜가 아니라 시간과 관련되어있는 경우, 말했다 시간으로 자정에 DATETIME으로 저장하는 것이 좋습니다. 때문에:
따라서, 당신은 단지 날짜에 관심을 가정하고, 같은 데이터를 저장합니다. 위의 쿼리를 단순화 할 수 있습니다 :
--112 is ISO format 'YYYYMMDD' declare @filterDate char(8) = CONVERT(char(8), GETDATE(), 112) select * from Sales.Orders where OrderDate = @filterDate
-
==============================
4.이 일을 시도 할 수 있습니다
이 일을 시도 할 수 있습니다
CONVERT(DATE, GETDATE()) = CONVERT(DATE,'2017-11-16 21:57:20.000')
나는 시험이 다음 코드로 MS SQL 2014
select case when CONVERT(DATE, GETDATE()) = CONVERT(DATE,'2017-11-16 21:57:20.000') then 'ok' else '' end
-
==============================
5.MM / DD / MM / DD / YYYY에 YYYY와 같은 비교하여 두 날짜하십시오. dateTime을해야합니다 필드의 우선 열 유형을 기억하십시오. 예 : COLUMNNAME : PAYMENT_DATE dataType와 : 날짜 시간.
MM / DD / MM / DD / YYYY에 YYYY와 같은 비교하여 두 날짜하십시오. dateTime을해야합니다 필드의 우선 열 유형을 기억하십시오. 예 : COLUMNNAME : PAYMENT_DATE dataType와 : 날짜 시간.
그 후 당신은 쉽게 비교할 수 있습니다. 쿼리는 다음과 같습니다
select * from demo_date where date >= '3/1/2015' and date <= '3/31/2015'.
그것은 매우 간단합니다 ...... 그것은 테스트 .....
from https://stackoverflow.com/questions/1843395/compare-datetime-and-date-ignoring-time-portion by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 SQL, CONCATENATE 여러 열 + 텍스트 추가 (0) | 2020.04.14 |
---|---|
[SQL] 합계로 요약 행 추가 (0) | 2020.04.14 |
[SQL] PostgreSQL을 신속하게 비슷한 문자열 찾기 (0) | 2020.04.14 |
[SQL] 15 분 간격으로 그룹 MySQL의 쿼리 (0) | 2020.04.13 |
[SQL] PostgreSQL을 위해하지 않음있는 경우 DATABASE를 생성 시뮬레이션? (0) | 2020.04.13 |