CAST / CONVERT问题算术溢出错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAST / CONVERT问题算术溢出错误相关的知识,希望对你有一定的参考价值。

[SELECT有效,但UPDATE无效。

CASTCONVERT的每个版本>

我遇到此错误:

将整数转换为数据类型数值的算术溢出错误

[当我尝试这样做时:

$sql = "UPDATE rentinc ".
       "SET curr_loss_mo = ROUND(CONVERT(numeric(3,0), DATEDIFF(DAY, missincdate, GETDATE()) / 30), 0) ".
       "WHERE months2 > 12";

我很确定上面的代码中存在过大的杀伤力,但我正在尝试一切。

我可以去SSMS并运行此SELECT:

SELECT curr_loss_mo, ROUND(CONVERT(numeric(3, 0), DATEDIFF(DAY, missincdate, GETDATE()) / 30), 0) AS DateNumCalc
FROM rentinc
WHERE months2 > 12

而且效果很好。而且这两列看起来完全一样! curr_loss_mo字段为numeric(3,0),表中没有试图使用三个以上字符进行更新的值。

所以我为什么会收到此错误?

“将int转换为数值类型的数字的算术溢出错误”

SELECT有效,但UPDATE不起作用。每个版本的CAST和CONVERT都会出现此错误:算术溢出错误将int转换为数值类型的数值当我尝试这样做时:$ sql =“ ...

答案

事实证明,这个谜底更深,但是我找到了解决方法,所以我照顾了它。

以上是关于CAST / CONVERT问题算术溢出错误的主要内容,如果未能解决你的问题,请参考以下文章

SQL 将expression 转换为数据类型 datetime 时出现算术溢出错误

(SQL)将 expression 转换为数据类型 int 时发生算术溢出错误

警告 C26451 算术溢出:使用运算符“-”

分页时算术溢出错误

为啥 SQL Server 在将 int 转换为数据类型 numeric 时抛出算术溢出错误?

SQL Server 算术溢出错误 - 将 nvarchar 转换为 datetime