sql-server – 将表达式转换为数据类型datetime的算术溢出错误. (显示日期时间..)

前端之家收集整理的这篇文章主要介绍了sql-server – 将表达式转换为数据类型datetime的算术溢出错误. (显示日期时间..)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
执行跟随错误显示
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 Fiddle with demo.

当您尝试将数字类型转换为日期时间时,sql Server会尝试将数值添加为日期01-Jan-1900的天数.在你的情况下,这是试图增加数百万天,因此溢出错误.

如果您愿意,CONVERT也可以正常工作:

select yr_mnth_dt = convert(datetime,convert(char(8),@yr_mnth_dt));

SQL Fiddle with demo.

原文链接:https://www.f2er.com/mssql/83065.html

猜你在找的MsSQL相关文章