NVARCHAR to DATE (SQL Server)



我有将week_date存储为nvarchar(60)的表。当我尝试将其更改为date时,我得到以下错误。

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

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

Msg 241,级别 16,状态 1,第 1
行 从字符串转换日期和/或时间时转换失败。

我已经使用了下面的方法进行转换,但这引发了一个错误

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

谢谢

使用 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;

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

相关内容

最新更新