我正在尝试将列数据类型从bigint更改为日期类型,直接显示错误:
"无法修改表格。从数据类型bigint显式转换 到目前为止是不允许的。"
即使我尝试使用alter query再次更改也会出现此错误
"操作数类型冲突:bigint与日期"不兼容。
请帮助..
我尝试了什么:
ALTER TABLE emp_det1 ALTER COLUMN dob date
答案 0 :(得分:0)
它出错,因为您的bigint列中包含无法显式转换为日期时间的数据。下面的代码测试理论,并将失败。在没有数据插入的情况下再次尝试,它将起作用。建议创建新的日期时间列并在转换时传输数据的帖子评论是您的最佳选择...假设您的bigint值确实可以转换为日期时间。
create table #test (MyCol bigint)
insert into #test (MyCol) values(3123456789)
alter table #test
alter column MyCol datetime
答案 1 :(得分:0)
由于错误消息表明您无法将bigint转换为日期。
你需要做一些逻辑来转换它:
例如2016年4月10日将存储为4102016,2016年12月10日将为12102016.存在性格差异。
我的建议是:
根据你的日期格式,这个逻辑会有所不同,但对于美国(mm / dd / yyyy)看起来会是这样的:
{{1}}
您可以将转换更改为try_converts以查找不合格的日期,我还建议您在更新之前运行一些select语句,以确保在提交之前数据正确。