执行跟随错误时显示
declare @yr_mnth_dt as numeric; set @yr_mnth_dt = 20130822; select convert(datetime,@yr_mnth_dt,112) as YR_MNTH_DT
Arithmetic overflow error converting expression to data type datetime.
解决方法
你发现的是你试图将数字转换为日期时间,而这只是不起作用.
您需要先将数字转换为字符串:
declare @yr_mnth_dt as numeric; set @yr_mnth_dt = 20130822; select yr_mnth_dt = cast(cast(@yr_mnth_dt as char(8)) as datetime);
当您尝试将数字类型转换为日期时间时,sql Server会尝试将数值添加为日期01-Jan-1900的天数.在你的情况下,这是试图增加数百万天,因此溢出错误.
如果您愿意,CONVERT也可以正常工作:
select yr_mnth_dt = convert(datetime,convert(char(8),@yr_mnth_dt));