我有一個將文本顏色轉換爲日期時間的子查詢。由於它是文本格式,因此存在包含錯誤數據的coloumns。我知道第一個答案是糾正數據,我非常同意這一點。我沒有這個特權,不幸的是我必須處理它。從文本字段轉換日期時間的錯誤
下面是我的查詢
INNER JOIN TABLE XYZ
ON XYZ.COLOUMN1=YZX.COLOUMN2
LEFT JOIN (SELECT ABC.stu_id
ABC.stu_name
CONVERT(DATETIME,LMN.startDate,111) STARTDATE
CONVERT(DATETIME,LMN.endDate,111) ENDDATE
FROM STUDENT ABC
INNER JOIN AN_STUDENT_TABLE LMN
ON ABC.stu_id=LMN.stu_id
WHERE ISDATE(startDate)=1
AND ISDATE(endDate)=1
GROUP BY ABC.stu_id,ABC.stu_name,STARTDATE,ENDDATE) DIN ON DIN.stu_id=LMNOP.stu_id
WHERE e.date BETWEEN DIN.STARTDATE AND DIN.ENDDATE
當我與STARTDATE e.date比較和結束日期的失敗給了我一個衆所周知的錯誤
"The conversion of a varchar data type to a datetime data type resulted in an out-of-range value."
可以做些什麼來ATLEAST跳過這些壞數據記錄不能轉換? 我盡力解決這個問題,但失敗了。任何幫助/建議appretiated!
'不要使用'CONVERT(DATETIME,LMN.startDate,111)'而不是使用'CONVERT(DATETIME,CASE WHEN ISDATE(LMN.startDate)= 1 THEN LMN.startDate END,111)'並且結束日期相同(也可能是'e.Date',如果這也是一個字符串的話) –
Martin,我今天試過,但結果集中的值比預期的要少。所以我試圖從startDate和endDate的coloumns中找出不良數據。我可以發現許多輸入日期是(09/14/0210,01/23/1200,05/12/1212,09/25/1008,10/01/1001,01/23/1200,10/01/1007,01/01/0201) – palum
我想我必須做一個乏味的工作,找出所有的日期,其中有一個不好的數據。 (它會花費很長時間沒有痛苦沒有增益 – palum