首页 > 解决方案 > 如何将数据类型 VARCHAR 更改为 DATETIME?

问题描述

我当前的数据库列的数据类型是varchar,但我想将其更改为datetime. 我使用这个 sqlserver 代码来改变它,但失败了。

ALTER TABLE Logbook
ALTER COLUMN Company_Date datetime NOT NULL;

结果:

将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。

标签: sql-server

解决方案


这里最简单的选择可能是使用TRY_CONVERT

ALTER TABLE Logbook ADD COLUMN Company_Date1 datetime;

UPDATE Logbook
SET Company_Date1 = TRY_CONVERT(datetime, Company_Date);

ALTER TABLE Logbook DROP COLUMN Company_Date;
sp_rename 'Logbook.Company_Date1', 'Company_Date', 'COLUMN';

这里的策略是创建一个新的日期时间列Company_Date1,它是一个真正的日期时间列。然后,我们使用TRY_CONVERT中的文本值对其进行更新Company_Date。请注意,如果无法进行转换,则不会出现错误,而是NULL会返回 a。最后我们删除原始文本Company_Date列并重命名Company_Date1Company_Date.


推荐阅读