加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 将表达式转换为数据类型datetime的算术溢出错误.

发布时间:2020-12-12 16:19:21 所属栏目:MsSql教程 来源:网络整理
导读:执行跟随错误时显示 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 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读