2013-10-03 3 views
1

방금 ​​SQL Server 2012를 2005 년으로 업그레이드했습니다. 초보자이지만 이처럼 간단하지는 않은 내용이 있습니다. 나는 날짜와 시간을 기준으로 테이블에서 데이터를 가져올 수있었습니다. 지금은 내가 가지고있는 그대로 :SQL Server 2012의 날짜로 검색

Select * from receipts_table where receipt_cancel_date = '2013-09-20' 

이 항목을 업그레이드하기 전에 정상적으로 작동합니다. 2013-09-20의 취소 날짜가있는 영수증이 있다는 것을 알고있는 상황에서이를 어떻게 실행하고 실제로 원하는 결과를 얻을 수 있습니까?

고맙습니다

+0

당신이 '2013년 9월 20일'의 날짜에 속하는 모든 기록을 기대하고 있습니까? 시간 부분에 상관없이? – Khan

+0

예상되는 결과는 무엇입니까? – Khan

답변

1

당신이 날짜 매개 변수 문자열을 전달하는 경우, 가장 적합한 형식은 ISO (yyyymmdd) 형식입니다. 그렇지 않으면 문자열이 일부 서버에서 작동하더라도 서버의 문화에 따라 다른 문자열에서 작동하지 않을 수 있습니다. ISO format is culture independent.

또한 비교 목적으로 DATE (DATETIME 인 경우)로 변환하여 receipt_cancel_date 열에서 시간 부분을 제거하십시오.

이 시도 :

Select * from receipts_table 
where convert(date, receipt_cancel_date) = convert(date,'20130920') 

또는 당신의 형식 120 스타일를 사용

Select * from receipts_table 
where convert(date, receipt_cancel_date) = convert(date,'2013-09-20',120) 
+1

감사합니다. –

관련 문제