![](/img/trans.png)
[英]Conversion failed when converting date and/or time from character string SQL
[英]SQL - Conversion failed when converting date and/or time from character string
您可以做的是首先使用try_convert()
更新值,然后更改列名。 注意:这会将任何无效值设置为NULL
。
update customer
set dob = try_convert(date, dob);
alter table customer alter column dbo date;
如果您想查看错误值,那么在更改表之前,请运行:
select c.*
from customer c
where try_convert(date, dob) is null and dob is not null;
您可能对如何修复这些值有其他想法。
您不能通过更改列从 varchar 更改为日期或时间或日期时间。 为什么? 因为 SQL 服务器不知道该字段是否包含“2020 年 1 月 1 日”或“我的狗很可爱”。 您必须使用正确的数据类型重建表,然后将值CAST()
或CONVERT()
重建为真实的日期时间。
在引擎盖下,这更有意义。 char/varchar 每个字符使用一个字节。 nchar/nvarchar 每个字符使用 2 个字节。 日期时间是一个数字,而不是一个字符。 这意味着您需要一个将其更改为正确数字的例程。 如果您想更深入,该数字是自公历 0001 年 1 月 1 日午夜以来的滴答数(纳秒)。 更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.