2016-06-09 6 views
-1

이 테이블에 2016-06-09 10:56:29.000 형식의 날짜 필드가 있습니다. 내가 select2016-06-09 같은 현재 날짜를 기준으로 레코드 싶습니다. 나는 아래 쿼리를 시도하지만 어떤 레코드도 보여주지 않는다.MS SQL Server에서 현재 날짜와 LIKE를 비교하십시오.

select * from dbo.Accounts where createDate like CAST(GETDATE() as DATE) 

내가 여기 뭔가 잘못하고 있다는 것을 알고 있습니다. 모든 SQL 전문가, 도와주세요.

+2

날짜는 문자열이 아닙니다. 이것은 소수의 사과를 모두 주라고 말하는 것과 같습니다. –

답변

3

like을 사용하지 마십시오. 그냥 날짜로 값을 캐스트 :

select * 
from dbo.Accounts 
where cast(createDate as date) = CAST(GETDATE() as DATE); 

like은 문자열 기능입니다. =과 같은 date 함수를 사용하여 날짜를 비교해야합니다. like을 사용하면 해당 지역화 매개 변수를 사용하여 암시 적으로 문자열로 변환됩니다.

+0

고든에게 감사드립니다. 이제 그것은 나를 위해 작동합니다. – vkrams

+0

조심하십시오. 날짜로 변환하는 것은 where/join 절의 열에 sargable이 아닌 표현식을 적용하는 것에 대한 규칙의 한 가지 예외입니다. 논리적으로는 안되면 검색을 계속할 수도 있습니다. (여전히 나쁜 결과를 초래할 수 있습니다.) http://dba.stackexchange.com/questions/34047/cast-to-date-is-sargable-but-is-it-a-good-idea). 좀 더 흉한 것이지만, 'createdDate> = convert (date, getdate())와 createdDate

관련 문제