집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server의 DateTime 필드에서 시간을 효율적으로 제거하는 방법은 무엇입니까?
SQL Server: DateTime 데이터에서 효율적으로 시간 제거
SQL Server에서 datetime
필드를 사용하려면 날짜 구성 요소를 분리하고 시간을 버려야 하는 경우가 많습니다. 이 기사에서는 두 가지 일반적인 기술인 DATEADD
/DATEDIFF
과 char
로의 캐스팅을 비교하여 성능 특성을 분석합니다.
방식비교
DATEADD
/DATEDIFF
접근 방식:
<code class="language-sql">a) SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>
DATEDIFF
을 사용하여 신기원(1900-01-01)과의 날짜 차이를 계산한 다음 DATEADD
을 사용하여 시간 구성 요소 없이 날짜를 재구성합니다.
또는 다음으로 전송: char
:
<code class="language-sql">b) SELECT CAST(CONVERT(CHAR(11), GETDATE(), 113) AS DATETIME)</code>
datetime
을 문자열(날짜만 표시)로 변환한 다음 다시 datetime
로 변환합니다.
실적 분석
테스트 결과 (a)(DATEADD
/DATEDIFF
) 방법은 일반적으로 특히 대규모 데이터 세트의 경우 CPU 리소스를 더 적게 소비하는 것으로 나타났습니다. 그러나 언어 및 날짜 형식 불일치와 관련된 잠재적인 문제가 발생할 수 있습니다.
방법 (b) - 캐스팅 - 중간 char
변환으로 인해 약간 더 많은 데이터를 전송할 수 있지만 이 오버헤드는 일반적으로 (a)의 잠재적인 성능 향상보다 영향이 적습니다.
추가 고려사항
SQL Server 2008부터는 보다 직접적인 방법을 사용할 수 있습니다. 즉, DATE
데이터 유형으로 직접 캐스팅하는 것입니다.
추천
두 방법 모두 원하는 결과를 얻을 수 있지만 최적의 선택은 애플리케이션의 상황에 따라 달라집니다. 우수한 성능을 위해서는 특히 대규모 데이터 세트의 경우 DATEADD
/DATEDIFF
(방법 a)가 일반적으로 선호됩니다. datetime
열의 인덱싱이 중요한 경우 DATE
로 캐스팅하거나 시간 구성 요소가 인덱스 사용에 영향을 미치지 않는지 확인하세요.
위 내용은 SQL Server의 DateTime 필드에서 시간을 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!