首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NVARCHAR至今( Server)

NVARCHAR至今( Server)
EN

Stack Overflow用户
提问于 2018-02-04 23:21:06
回答 1查看 428关注 0票数 0

我的表与week_date一起存储为nvarchar(60)。当我试图将其更改为date时,就会出现以下错误。

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

代码语言:javascript
复制
WEEK_DATE
----------
2017-12-31
2018-01-01

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

我使用下面的代码进行转换,但这会引发一个错误。

代码语言:javascript
复制
SET WEEK_DATE = CONVERT(NVARCHAR(260), WEEK_DATE, 120)

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-02-04 23:26:55

使用try_convert()查找坏值:

代码语言:javascript
复制
select datecol
from t
where try_convert(date, datecol) is null and datecol is not null;

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

编辑:

若要将列更改为日期,首先要验证格式(因此在转换时不会出现错误):

代码语言:javascript
复制
update t
     set week_date = try_convert(date, week_date);

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

然后,修改表:

代码语言:javascript
复制
alter table t
     alter week_date date;

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48614008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档