简短的故事是我有一个带有varchar字段而不是datetime的SQL Server数据库(不要问,这是一个很长的故事,无法修复)。不知何故,我们最近在这些字段中插入了奇怪/随机字符而不是应该存在的字符(NULL,'或YYYY-MM-DD)。像这样:'?+ x',高位ascii字符。
该报告使用此查询来帮助将数据按到可用的内容(此处仅发布相关部分):
SELECT CASE WHEN c.CallStatus = 'Closed' THEN CAST(c.ClosedDate + ' ' + c.ClosedTime as datetime) ELSE NULL END as 'Closed Date'
WHERE CAST(c.closeddate AS DATETIME) BETWEEN @StartDate AND @EndDate
但是这个新的不良数据令人窒息。
如何更新查询以忽略错误数据,以便在查找错误数据源时可以运行报告?我的首要任务是让报告正常运行,其次是找到并杀死不良数据的来源。
答案 0 :(得分:5)
CASE WHEN ISDATE(closeddate) = 1 THEN CAST(c.closeddate AS DATETIME) ELSE NULL END
答案 1 :(得分:0)
看起来都是固定的,而不是很多!这是我的最终结果:
AND case WHEN ISDATE(closeddate)= 1 那么过去(c.closeddate AS DATETIME) @StartDate AND之间的空结束 @EndDate
现在正在追捕!