转换日期时间从文本字段中的错误

时间:2011-08-31 22:45:57

标签: tsql datetime

我有一个子查询,它将文本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."

可以做什么来至少跳过那些无法转换的坏数据记录? 我尽力解决这个问题,但失败了。任何有用的帮助/建议!

1 个答案:

答案 0 :(得分:0)

where子句中的ISDATE未必在转换中使用之前过滤掉错误日期。

我认为你应该分两步完成。首先创建一个临时表或表变量来保存STUDENTstartDateendDate正确的行(对此使用ISDATE),然后在实际中使用该表查询。