我有300.000行表;其中一列是varchar()但它确实包含日期xx / xx / xxxx或x / x / xxxx或类似的.但执行以下测试会产生错误:
SELECT CAST(MyDate as Datetime) FROM MyTable
问题是它没有告诉我哪一行……
我通过试验错误执行了一系列“手动”更新并执行了简单的更新来修复这些更新,但必须有一些奇怪的值需要删除或修复.
例如,我执行了一个修复了大约40行的简单测试:
UPDATE MyTable SET MyDate = REPLACE(MyDate,'/000','/200') FROM MyTable WHERE MyDate like ('%/000%’) UPDATE MyTable SET MyDate = REPLACE(MyDate,'/190','/199') FROM MyTable WHERE MyDate like ('%/190%’)
这修复了很多奇怪的行,其日期类似于01/01/0003等. (日期范围从1998年到2010年).
但是,我想知道上面的选择中哪些行失败了.
什么是最好的打印方式,所以我可以删除它们,编辑它们或看看该怎么做?谢谢.
解决方法
SELECT * FROM MyTable WHERE ISDATE(MyDate) = 0