SQL Server 更改字段名称
我在使用 SQL Server 2005 将数据库字段从 datetime
更改为 integer
时遇到问题
我的代码是...
alter table overtime alter column adate numeric(5)
在使用此查询时收到如下错误
不允许隐式转换 数据类型日期时间到数据类型 数字、表格 “DaiichiPayroll.dbo.Overtime”,列 '约会'。使用 CONVERT 函数 运行此查询。
有什么解决办法吗?
I have problem to alter the database field from datetime
to integer
with values using SQL Server 2005
My code is...
alter table overtime alter column adate numeric(5)
while using this query am getting error like this
Disallowed implicit conversion from
data type datetime to data type
numeric, table
‘DaiichiPayroll.dbo.Overtime’, column
‘adate’. Use the CONVERT function to
run this query.
Any solutions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
服务器无法将您的日期时间列隐式转换为数字。解决方案之一是 -
The server is unable to convert your dateTime column to numeric implicitly. One of the solution is to -
虽然 Sachin 的答案可能是最好的解决方案,但您应该知道该表仍将继续使用已删除列的存储空间 直到重建聚集索引。
因此,如果有一些明确的
convert
语法可以运行,例如将 8 字节datetime
列更改为 8 字节,那就太好了>bigint
列,但据我所知不存在。另一种方法是使用 SSMS 为您生成脚本。这将生成一个重建整个表的脚本。然而,如果您有一个大表或许多 NCI,那么这种阻塞开销很可能是不可接受的。
Whilst Sachin's answer is probably the best solution you should be aware that the table will still continue to use the storage space for the deleted column until you rebuild the clustered index.
For that reason it would be quite nice if there was some explicit
convert
syntax that could be run to, for example, change an 8 bytedatetime
column to an 8 bytebigint
column but AFAIK none exists.An alternative would be to use SSMS to generate the script for you. This will generate a script that rebuilds the whole table. If you have a large table or many NCIs the blocking overhead of this may well be unacceptable however.