2011-04-07 46 views
14

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

但是,我不能只将列的类型从datetime切换到datetime2。有没有办法做这种转换或我必须重新导入数据?

谢谢

丹尼尔

+2

我得问:为什么他们需要1753年之前的日期? – MusiGenesis 2011-04-07 13:17:03

+0

这是一个关于历史文本和信件的数据库.. – TheQuant 2011-04-07 13:18:04

+2

为什么你不能只改变类型? 'alter table TableName alter column ColumnName datetime2'? – 2011-04-07 13:20:17

回答

22

但是我不能只从切换日期时间列的 类型 日期时间

当然您也可以使用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 
+2

如果您的列具有依赖关系(例如索引和约束),则并不那么简单。除了删除和重新创建这些内容之外,没有别的办法。 – MarioDS 2016-06-09 13:12:58