我有一个子查询,它将文本coloumn转换为datetime。由于它是文本格式,因此存在包含错误数据的颜色。我知道第一个答案是纠正数据,我非常同意。我没有这样做的特权,不幸的是我必须处理它。
下面是我的查询
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
当我将e.date与startdate和enddate进行比较时,它无法给我一个众所周知的错误
"The conversion of a varchar data type to a datetime data type resulted in an out-of-range value."
可以做什么来至少跳过那些无法转换的坏数据记录? 我尽力解决这个问题,但失败了。任何有用的帮助/建议!
答案 0 :(得分:0)
where子句中的ISDATE
未必在转换中使用之前过滤掉错误日期。
我认为你应该分两步完成。首先创建一个临时表或表变量来保存STUDENT
中startDate
和endDate
正确的行(对此使用ISDATE
),然后在实际中使用该表查询。