1

我在 tbMyTable 中有一个列 startDate,它被错误地设置为 varchar。此列中的大多数数据都很好,但使用了多种日期时间格式。表格的几行只是在列中有垃圾。

请帮我编写一个 sql 脚本,将列从 varchar(50) 转换为可为空的 DateTime - 保存可以转换的数据并将坏数据设置为空。

4

1 回答 1

2

Check this t-sql script (its works with different string dates format):

SELECT CASE WHEN ISDATE(a.field) = 1 THEN CONVERT (DATETIME, a.field, 101) ELSE NULL END field
FROM (
    SELECT '2012-06-06' as field
    UNION
    SELECT null as field
    UNION
    SELECT '2012-06-06asdad' as field
    UNION
    SELECT '2012/06/06' as field 
) a

For more information of the CONVERT function check this LINK. The function ISDATE returns 1 when is a valid date.

于 2013-06-19T17:54:04.523 回答