SQL Server清除不一致的日期

时间:2018-03-13 03:24:09

标签: sql sql-server sql-server-2008

我的当前日期存储为varchar(1000),格式不一致。即yyyy-mm-dddd-mm-yyyy等。

我可以运行哪些查询来清理它们,以便它们采用一致的格式,因此我可以将列数据类型从varchar(1000)转换为date

由于

1 个答案:

答案 0 :(得分:1)

如果您有许多不同的日期格式(可能包括无效数据),这可能会变得很难看。一种选择是使用CASE表达式分配新的日期列,以选择正确的格式掩码:

UPDATE yourTable
SET date_col = CASE WHEN date LIKE '[0-9]{2}-[0-9]{2}-[0-9]{4}'
                    THEN CONVERT(datetime, date, 105)
                    WHEN date LIKE '[0-9]{4}-[0-9]{2}-[0-9]{2}'
                    THEN CONVERT(datetime, date) END;

您可以为上述CASE表达式添加其他日期格式的条件。