此命令适用于某些SQL Server数据库,但不适用于其他SQL Server数据库。
select Cast(Cast(DateDiff(mm,'20110608','20110708') as decimal(5,2))/12 as decimal(5,2))
它会返回此错误
Arithmetic overflow error converting numeric to data type numeric.
或工作并返回:
0.08
我应该在数据库上更改任何设置吗?
答案 0 :(得分:2)
通过设置:
解决了这个问题SET NUMERIC_ROUNDABORT OFF
答案 1 :(得分:0)
运行相同版本或不同版本的SQL Server的不同实例?唯一突出的是你的日期格式(例如'20110608')。可能在所有SQL Server版本中都不支持吗?
无论如何,请尝试这样做,看看是否出现溢出错误:
SELECT
CONVERT(Decimal(5, 2), DATEDIFF(MM, '20110608', '20110708') / 12.0);