엄밀히 말하면, 방법 a
이 가장 자원 집약적입니다.
a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
너무 많은 시간을 할애하여 몇 백만 행에 걸쳐 동일한 총 지속 시간 동안 CPU 집약도가 입증되지 않았습니다. .
비슷한 결과를 가진 다른 곳에서도 비슷한 테스트를 보았습니다.
나는 DATEADD / DATEDIFF 때문에 선호 :
2011 년 10 월 편집
SQL 서버 2008+의 경우에 CAST 수 있습니다 date
즉 CAST(getdate() AS date)
. 또는 date
데이터 유형을 사용 하여 제거 할 시간이 없습니다.
2012 년 1 월 수정
이것이 얼마나 유연한 지에 대한 효과적인 예 : SQL Server에서 반올림 시간 또는 날짜 그림으로 계산해야 함
편집 : 2012 년 5 월호
생각없이 WHERE 절 등에서 이것을 사용하지 마십시오. 열에 함수 또는 CAST를 추가하면 인덱스 사용이 무효화됩니다. 여기 2 번을 참조하십시오 : http://www.simple-talk.com/sql/t-sql-programming/ten-common-sql-programming-mistakes/
이제 여기에는 CAST를 올바르게 관리하는 최신 SQL Server 옵티 마이저 버전의 예가 있지만 일반적으로 나쁜 생각입니다 ...
datetime2의 2018 년 9 월 편집
DECLARE @datetime2value datetime2 = '02180912 11:45' --this is deliberately within datetime2, year 0218
DECLARE @datetime2epoch datetime2 = '19000101'
select DATEADD(dd, DATEDIFF(dd, @datetime2epoch, @datetime2value), @datetime2epoch)