在SQL Server中将datetime列转换为datetime2列?

The*_*ant 22 c# sql-server

我有一个带有datetime列的SQL Server 2005数据库.表中已有数据,但现在客户需要1753年之前的日期.所以我决定将数据库迁移到SQL Server 2008以使用该datetime2类型.

但是,我不能只将列的类型切换datetimedatetime2.有没有办法进行这种转换,还是我必须重新导入数据?

谢谢,

丹尼尔

SQL*_*ace 30

但是,我不能只将列的类型从datetime切换到datetime

当然可以,使用 ALTER TABLE TableNAme ALTER column ColumnNAme datetime2

USE tempdb
GO

CREATE TABLE Test(SomeDate DATETIME)
INSERT Test values (GETDATE())

SELECT * FROM Test
GO

ALTER TABLE Test ALTER column SomeDate datetime2
GO

INSERT Test values ('16000101')

SELECT * FROM Test
GO
Run Code Online (Sandbox Code Playgroud)

  • 如果您的列具有依赖项(例如索引和约束),则不是那么简单.除了删除和重新创建它们之外别无他法. (5认同)