我有一个 nvarchar 列,其日期格式如下:“04/18/2021 13:04:15”(不带引号)。我想将此列更改为日期时间并迁移所有数据。我查找了格式代码并发现,与我的变体最接近的代码是 US (101)。所以我试图
UPDATE DropPhotos
SET CreationDateTime = CONVERT(NVARCHAR(255), CONVERT(DateTime, CreationDateTime, 101))
ALTER TABLE DropPhotos
ALTER COLUMN CreationDateTime DateTime
但我得到错误:
将数据类型 nvarchar 转换为日期时间时出错
首先,您不应将日期/时间值作为字符串存储在数据库中。当然,如果下一步是将列更改为datetime
(或类似的),则您正在做的事情很好。
其次,您显然有错误的数据。所以,使用try_convert()
找到它:
select CreationDateTime
from DropPhotos
where try_convert(DateTime, CreationDateTime, 101) is null and
CreationDateTime is not null;
您需要弄清楚如何处理这些错误的值。如果NULL
可以接受,那么只需try_convert()
在您的原始逻辑中使用:
SET CreationDateTime = CONVERT(NVARCHAR(255), TRY_CONVERT(DateTime, CreationDateTime, 101))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句