> 데이터 베이스 > MySQL 튜토리얼 > SQL Server의 DateTime 필드와 날짜 전용 쿼리를 올바르게 일치시키는 방법은 무엇입니까?

SQL Server의 DateTime 필드와 날짜 전용 쿼리를 올바르게 일치시키는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-04 12:17:35
원래의
531명이 탐색했습니다.

How to Correctly Match Date-Only Queries with DateTime Fields in SQL Server?

SQL Server에서 날짜 전용 쿼리와 날짜/시간 필드 일치

날짜 전용 값을 사용하여 SQL Server에서 날짜/시간 필드를 쿼리하는 경우 정확한 결과를 얻으려면 의미를 이해해야 합니다.

제공된 내용에서 예:

Select * from [User] U
where  U.DateCreated = '2014-02-07'
로그인 후 복사

사용자가 '2014-02-07 12:30:47.220'에 생성된 경우 정확한 날짜 시간 값만 비교하므로 쿼리는 결과를 반환하지 않습니다.

권장 접근 방식

이 문제를 해결하고 정확하게 일치하려면 날짜/시간 필드가 있는 날짜 전용 값의 경우 다음 접근 방식을 사용하는 것이 좋습니다.

Select * from [User] U 
where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
로그인 후 복사

이 쿼리는 날짜 시간 값이 '2014-02-07' 이상이지만 그 이전인 모든 레코드를 포함하는 범위를 지정합니다. '2014-02-08.'

SARGable 술어의 중요성과 회피 함수

날짜 시간 값을 날짜 전용 기준과 비교할 때 where 절에 변환()과 같은 함수를 사용하지 않는 것이 중요합니다. 이로 인해 인덱스 사용이 방해되고 쿼리 속도가 느려지며 불필요한 계산이 발생할 수 있습니다. 대신 데이터에 맞게 쿼리를 수정하면(SARGable 조건자 사용이라고도 함) 쿼리 성능이 향상됩니다.

날짜 범위 쿼리 모범 사례

또한 다음을 수행하는 것이 좋습니다. 날짜 범위를 쿼리할 때 BETWEEN 연산자를 사용하지 마세요. 대신 최적의 결과를 얻으려면 다음 형식을 사용하세요.

WHERE col >= '20120101' AND col < '20120201'
로그인 후 복사

이 접근 방식은 모든 데이터 유형 및 정밀도와의 호환성을 보장하고 날짜/시간 값의 시간 구성 요소와 관련된 잠재적인 문제를 제거합니다.

위 내용은 SQL Server의 DateTime 필드와 날짜 전용 쿼리를 올바르게 일치시키는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿