我有一张旧表,其中datetime
列构建为varchar
,并且在此表中插入数据的表单是自由格式,没有验证/限制。我已经更正了表格,现在我正在设定规范化数据的任务。我需要在此列中查询不能CAST
作为datetime
示例:
9/30/2008
9/30/13
august 2010
5/11
30SEP12
31-Mar-2011
2005
我已将N/A
数据清理为NULL
,但我不确定获取所有不被视为有效日期的有效方法。任何提示或技巧或我是否必须按记录进行记录才能将此列转换为datetime
数据类型?
答案 0 :(得分:6)
您可以使用ISDATE
来确定不是日期的记录:
SELECT *
FROM YourTable
WHERE isdate(OldDateField) = 0
您可以使用以下查询查看哪些不是日期:
SELECT isdate('9/30/2008')
SELECT isdate('9/30/13')
SELECT isdate('august 2010')
SELECT isdate('5/11')
SELECT isdate('30SEP12')
SELECT isdate('31-Mar-2011 2005')