1

我无法使用 SQL Server 2005 将数据库字段从值更改datetimeinteger

我的代码是...

alter table overtime alter column adate numeric(5)

使用此查询时出现这样的错误

不允许从数据类型 datetime 到数据类型 numeric 的隐式转换,表 'DaiichiPayroll.dbo.Overtime',列 'adate'。使用 CONVERT 函数运行此查询。

有什么解决办法吗?

4

2 回答 2

6

服务器无法将您的 dateTime 列隐式转换为数字。解决方案之一是 -

  1. 创建一个数字类型的新列
  2. 通过编写附加查询将数据从 dateTime 列转换为数字列,然后
  3. 删除日期时间列
  4. 将新添加的列重命名为与删除的 dateTime 列相同的名称。
于 2010-12-03T13:10:26.387 回答
2

虽然 Sachin 的回答可能是最好的解决方案,但您应该知道,在您重建聚集索引之前,该表仍将继续使用已删除列的存储空间。

convert出于这个原因,如果有一些明确的语法可以运行,例如,将 8 字节datetime列更改为 8 字节bigint列但 AFAIK 不存在,那就太好了。

另一种方法是使用 SSMS 为您生成脚本。这将生成一个重建整个表的脚本。但是,如果您有一个大表或许多 NCI,那么这种阻塞开销可能是不可接受的。

于 2010-12-03T16:35:35.290 回答