我的表格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)
谢谢
答案 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;
您可能希望使用第一个查询来检查是否实际识别了所有日期字符串。