数据库SQL问题

时间:2011-06-08 14:27:18

标签: sql-server tsql

此命令适用于某些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

我应该在数据库上更改任何设置吗?

2 个答案:

答案 0 :(得分:2)

通过设置:

解决了这个问题
SET NUMERIC_ROUNDABORT OFF

答案 1 :(得分:0)

运行相同版本或不同版本的SQL Server的不同实例?唯一突出的是你的日期格式(例如'20110608')。可能在所有SQL Server版本中都不支持吗?

无论如何,请尝试这样做,看看是否出现溢出错误:

SELECT
  CONVERT(Decimal(5, 2), DATEDIFF(MM, '20110608', '20110708') / 12.0);