3

我有一个较旧的表,其中一datetime列被构建为 avarchar并且将数据插入该表的表单是自由格式,没有验证/限制。我已经更正了表格,现在开始执行标准化数据的任务。我需要在该列中查询所有不能CAST作为datetime

例子:

9/30/2008
9/30/13
august 2010
5/11
30SEP12
31-Mar-2011
2005

我已经清理了N/A数据,NULL但我不确定获取所有不被视为有效日期的所有内容的有效方法。有什么提示或技巧,还是我必须逐条记录才能将此列转换为datetime数据类型?

4

1 回答 1

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')
于 2012-07-19T20:42:08.940 回答