You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSSQL日期转INT遇算术溢出错误,求正确转换方法

MSSQL日期转INT时算术溢出的解决方法

问题原因

算术溢出是因为你计算出的数值超出了INT类型的取值范围(INT最大值为2147483647)。比如取年份后两位(如24)乘以100000000得到2400000000,这个数已经大于INT的上限,直接触发溢出报错。另外你的表列引用语法有误,应该用[dbo].[QI_Data].[DateEntered]而非[dbo.QI_Data.DateEntered]。

解决方案

方案1:改用BIGINT类型存储结果

BIGINT的取值范围远大于INT(最大值为9223372036854775807),完全能容纳你需要的日期分钟级编码值。修改代码如下:

(CONVERT([bigint],(((right(datepart(year, [dbo].[QI_Data].[DateEntered]),(2))*(100000000)
                       +datepart(month, [dbo].[QI_Data].[DateEntered])*(1000000))
                       +datepart(day, [dbo].[QI_Data].[DateEntered])*(10000))
                       +datepart(hour, [dbo].[QI_Data].[DateEntered])*(100))
                       +datepart(minute, [dbo].[QI_Data].[DateEntered]))) AS DateEnteredToInt

方案2:用FORMAT函数简化转换(SQL Server 2012+)

如果你的SQL Server版本是2012及以上,可以用更简洁的FORMAT函数直接生成yyMMddHHmm格式的字符串,再转换为BIGINT,代码更易读且不易出错:

CONVERT(BIGINT, FORMAT([dbo].[QI_Data].[DateEntered], 'yyMMddHHmm')) AS DateEnteredToInt

注意事项

如果业务强制要求使用INT类型,那只能放弃小时和分钟的编码(仅保留yyMMdd格式,最大值为991231,在INT范围内),但这样会丢失时间精度,一般不推荐。

内容的提问来源于stack exchange,提问作者DevGianArt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:40:40