查询无法转换为日期时间的数据列

时间:2012-07-19 20:38:04

标签: sql-server-2008 datetime type-conversion

我有一张旧表,其中datetime列构建为varchar,并且在此表中插入数据的表单是自由格式,没有验证/限制。我已经更正了表格,现在我正在设定规范化数据的任务。我需要在此列中查询不能CAST作为datetime

的所有记录

示例:

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

我已将N/A数据清理为NULL,但我不确定获取所有不被视为有效日期的有效方法。任何提示或技巧或我是否必须按记录进行记录才能将此列转换为datetime数据类型?

1 个答案:

答案 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')