NVARCHAR到DATE(SQL Server)

时间:2018-02-04 23:21:07

标签: sql sql-server

我的表格week_date存储为nvarchar(60)。当我尝试将其更改为date时,我遇到了错误。

表中的记录采用yyyy-mm-dd格式

WEEK_DATE
----------
2017-12-31
2018-01-01
  

Msg 241,Level 16,State 1,Line 1
  从字符串转换日期和/或时间时转换失败。

我已使用以下内容进行转换,但会引发错误

SET WEEK_DATE = CONVERT(NVARCHAR(260), WEEK_DATE, 120)

谢谢

1 个答案:

答案 0 :(得分:0)

使用try_convert()查找错误值:

select datecol
from t
where try_convert(date, datecol) is null and datecol is not null;

您可以在代码中使用try_convert(),但是您应该调查数据问题。

编辑:

要将列更改为日期,请先验证格式(以免转换时出错):

update t
     set week_date = try_convert(date, week_date);

不要担心格式。它将使用任何本地化设置。但幸运的是,结果字符串将自动转换回日期。

然后,改变表格:

alter table t
     alter week_date date;

您可能希望使用第一个查询来检查是否实际识别了所有日期字符串。