2016-12-08 6 views
0

샘플 CAST 실패 결과를 무시 :SQL 절

WHERE (QD.New_P11dValue > 0 
AND DS.New_purchaseordersenddate IS NOT NULL 
AND DS.New_ActualDate IS NULL 
AND DS.New_PassedToAdmin = 1 
AND ds.New_InStock = 0 
) 
AND 
(
(du.New_AnticipatedDate >= '04/01/2017' AND du.New_AnticipatedDate IS NOT NULL) 
OR 
(CAST(osu.New_NewValue as date) >= '04/01/2017' AND osu.New_NewValue IS NOT NULL) 
) 

내 문제의 근본 원인은 osu_new_newvalue 날짜를 나타내고 있지만 VARCHAR로 저장한다는 것입니다을, 그 불행하게도 변경할 수 없습니다. 내가 문자열에서 날짜 및/또는 시간을 변환 할 때

변환이 실패한 쿼리를 실행할 때

나는이 오류가 발생합니다.

어쨌든 나는 캐스트를 실패한 결과를 무시할 수 있습니까?

감사

+2

사용중인 SQL Server의 버전을 다음과 같이 try_convert 사용할 수 있습니까? 일부 최신 버전에는 TRY_PARSE, TRY_CONVERT 및 TRY_CAST 함수가 있습니다. – Bridge

+0

SQL Server 2012 – Ben

+0

그럼 잘 가야합니다! – Bridge

답변

1

당신은

(try_convert(date,osu.New_NewValue) >= '04/01/2017' AND try_convert(date,osu.New_NewValue) IS NOT NULL) 
) 
1
(try_cast(New_NewValue as date) >= '04/01/2017' AND try_cast(New_NewValue as date) IS NOT NULL) 
) 
+0

테스트 해 보셨습니까? try_cast 구문의 경우 : TRY_CAST (expression AS data_type [(length)]) – PawelCz

+0

내 코드를 수정하여 내 대답을 편집했습니다. // @ PawelCz – Chanukya