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

SQL Server转换Epoch日期遇算术溢出错误,本地正常办公环境异常

问题原因及解决方法

错误原因

SQL Server中DATEADD(second, 秒数, 起始时间)函数的秒数参数默认仅支持int类型,而int的最大值是2147483647,对应Epoch时间为2038-01-19 03:14:07。

你的办公环境里,Table_Time_Test1表的Time字段(bigint类型)中存在大于2147483647的数值,执行DATEADD时,SQL Server会自动将bigint类型的Time隐式转换为int,超出int范围就触发「Arithmetic overflow error converting expression to data type int」错误。

而你家中的环境里,所有Time值都在int的有效范围内(比如示例值1673380730远小于2147483647),所以转换正常。

解决方法

根据你的SQL Server版本选择对应的方案:

方案1:使用DATEADD_BIG(SQL Server 2022及以上版本)

DATEADD_BIG专门支持bigint类型的间隔数参数,直接替换原函数即可:

SELECT FORMAT(DATEADD_BIG(second, Time, CAST('1970-01-01' AS datetime)), 'yyyyMMdd') AS created_time 
FROM Table_Time_Test1

方案2:转换为datetime2类型兼容更大范围(全版本通用)

datetime2类型的时间范围比datetime更广,结合显式转换可以避免溢出:

SELECT FORMAT(CAST('1970-01-01' AS datetime2) + Time/1.0/86400, 'yyyyMMdd') AS created_time 
FROM Table_Time_Test1

也可以继续使用DATEADD,通过指定datetime2起始时间来兼容更大数值:

SELECT FORMAT(DATEADD(second, CAST(Time AS bigint), CAST('1970-01-01' AS datetime2)), 'yyyyMMdd') AS created_time 
FROM Table_Time_Test1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:50:16