도전:
대규모 SQL Server 데이터 세트를 처리하려면 날짜/시간 필드에서 시간 구성 요소를 효율적으로 제거해야 하는 경우가 많습니다. 두 가지 일반적인 기술이 자주 사용됩니다.
DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
CAST(CONVERT(CHAR(11), getdate(), 113) AS DATETIME)
최적 접근 방식:
성능 벤치마크에서는 DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
가 가장 효율적인 방법으로 일관되게 나타났습니다. 이 접근 방식은 다음과 같습니다.
최신 SQL Server 버전(2008 이상)은 뛰어난 대안을 제공합니다.
CAST(getdate() AS DATE)
날짜/시간을 날짜 데이터 유형으로 직접 변환하므로 시간 구성요소를 제거할 필요가 없습니다.datetime2
필드의 경우 DATEADD
메서드를 계속 적용할 수 있지만 epoch 값을 조정해야 합니다.<code class="language-sql">DECLARE @datetime2value datetime2 = '02180912 11:45'; -- Year 0218 within datetime2 DECLARE @datetime2epoch datetime2 = '19000101'; SELECT DATEADD(dd, DATEDIFF(dd, @datetime2epoch, @datetime2value), @datetime2epoch);</code>
주요 고려 사항:
WHERE
절 내에서 이러한 함수를 사용하면 인덱스 활용도에 부정적인 영향을 미칠 수 있습니다. 세심한 배려가 필요합니다.CAST(CHAR())
메서드는 문자 변환에 의존하므로 언어 설정 및 날짜 형식과 관련된 잠재적인 취약점이 발생합니다.FLOAT
을 사용하지 마세요. 이는 대규모 데이터 세트에 적합하지 않을 수 있습니다.위 내용은 SQL Server의 DateTime 필드에서 시간 구성 요소를 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!