我在 tbMyTable 中有一个列 startDate,它被错误地设置为 varchar。此列中的大多数数据都很好,但使用了多种日期时间格式。表格的几行只是在列中有垃圾。
请帮我编写一个 sql 脚本,将列从 varchar(50) 转换为可为空的 DateTime - 保存可以转换的数据并将坏数据设置为空。
肯
我在 tbMyTable 中有一个列 startDate,它被错误地设置为 varchar。此列中的大多数数据都很好,但使用了多种日期时间格式。表格的几行只是在列中有垃圾。
请帮我编写一个 sql 脚本,将列从 varchar(50) 转换为可为空的 DateTime - 保存可以转换的数据并将坏数据设置为空。
肯
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.