SQL Server更改字段名称

时间:2010-12-03 13:07:38

标签: sql-server field alter

我有问题使用SQL Server 2005将数据库字段从datetime更改为integer

我的代码是......

alter table overtime alter column adate numeric(5)

使用此查询时出现错误,如此

  

不允许隐式转换   数据类型datetime到数据类型   数字,表格   'DaiichiPayroll.dbo.Overtime',专栏   '一个约会'。使用CONVERT函数   运行此查询。

任何解决方案?

2 个答案:

答案 0 :(得分:6)

服务器无法隐式地将dateTime列转换为数字。其中一个解决方案是 -

  1. 创建一个数字类型的新列
  2. 通过编写其他查询然后
  3. 将数据从dateTime列转换为数字列
  4. 删除dateTime列
  5. 将新添加的列重命名为与已删除的dateTime列相同。

答案 1 :(得分:2)

虽然Sachin的答案可能是最好的解决方案,但您应该知道该表仍将继续使用已删除列until you rebuild the clustered index的存储空间。

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

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