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

执行SQL语句遇Msg 8115错误:算术溢出转换为varchar求指导

SQL执行报错解决办法

问题还原

执行这段SQL时触发错误:

SELECT
  dateadd(s,convert(bigint, mcdt.FROMDATE) / 1000,convert(datetime, '1-2-1970 00:00:00')
  ) AS "From Date",FROM "MaintenanceContract" "mcdt"

错误提示:

"Msg 8115, Level 16, State 2, Line 1 Arithmetic overflow error converting expression to data type varchar."

报错原因

  1. 语法错误:AS "From Date"后面多了个逗号,数据库会误将FROM识别为待查询的列,尝试转换为varchar类型时直接触发溢出错误,这是当前报错的直接原因。
  2. 潜在数值风险:如果FROMDATE存储的数值过大,转换为bigint类型时也可能溢出,但当前问题根源是语法问题。

修复方案

第一步:修正语法错误

删除"From Date"后的多余逗号,同时建议将日期字符串改为标准格式(避免不同环境下的解析歧义),修正后的SQL如下:

SELECT
  dateadd(s, convert(bigint, mcdt.FROMDATE) / 1000, convert(datetime, '1970-01-02 00:00:00')) AS "From Date"
FROM "MaintenanceContract" "mcdt"

第二步:若仍报错,排查数值问题

如果修正语法后依旧触发溢出错误,需要检查FROMDATE字段:

  • 确认字段类型,若为字符串类型,需确保所有值都能转换为有效整数;
  • 若数值超出bigint范围(bigint最大值为9223372036854775807),可改用decimal类型转换后再计算:
SELECT
  dateadd(s, convert(decimal(20,0), mcdt.FROMDATE) / 1000, convert(datetime, '1970-01-02 00:00:00')) AS "From Date"
FROM "MaintenanceContract" "mcdt"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:17:00