我无法使用 SQL Server 2005 将数据库字段从值更改datetime
为integer
我的代码是...
alter table overtime alter column adate numeric(5)
使用此查询时出现这样的错误
不允许从数据类型 datetime 到数据类型 numeric 的隐式转换,表 'DaiichiPayroll.dbo.Overtime',列 'adate'。使用 CONVERT 函数运行此查询。
有什么解决办法吗?
我无法使用 SQL Server 2005 将数据库字段从值更改datetime
为integer
我的代码是...
alter table overtime alter column adate numeric(5)
使用此查询时出现这样的错误
不允许从数据类型 datetime 到数据类型 numeric 的隐式转换,表 'DaiichiPayroll.dbo.Overtime',列 'adate'。使用 CONVERT 函数运行此查询。
有什么解决办法吗?
服务器无法将您的 dateTime 列隐式转换为数字。解决方案之一是 -
虽然 Sachin 的回答可能是最好的解决方案,但您应该知道,在您重建聚集索引之前,该表仍将继续使用已删除列的存储空间。
convert
出于这个原因,如果有一些明确的语法可以运行,例如,将 8 字节datetime
列更改为 8 字节bigint
列但 AFAIK 不存在,那就太好了。
另一种方法是使用 SSMS 为您生成脚本。这将生成一个重建整个表的脚本。但是,如果您有一个大表或许多 NCI,那么这种阻塞开销可能是不可接受的。