sql-server - 如何将数据类型 VARCHAR 更改为 DATETIME?
问题描述
我当前的数据库列的数据类型是varchar
,但我想将其更改为datetime
. 我使用这个 sqlserver 代码来改变它,但失败了。
ALTER TABLE Logbook
ALTER COLUMN Company_Date datetime NOT NULL;
结果:
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
解决方案
这里最简单的选择可能是使用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_Date1
为Company_Date
.
推荐阅读
- c++ - '错误 C0000: 语法错误,意外 $end at token "
"' 并且不确定如何进行 - python - Pandas:聚合后每个组的计数器列
- mongodb - 使用 mongo-spark-connector 连接到 mongodb 时出错
- react-native - 如何在卡片上方显示组件图像
- bash - 将所有输出重定向到 lolcat
- javascript - css 溢出:隐藏导致鼠标 layerX & layerY 位置不正确
- android - 在 recyclerview 的第一项滚动到屏幕外后显示工具栏
- javascript - 如何将 csv 转换为 json 并编写特定函数以使用 javascript 生成图形?
- android - Android Studio (AS) 和 Emulator 工作正常,但 AS 无法识别模拟器
- android - 为什么你必须在 RxJava 中的 CompositeDisposable 上处理一个东西?