2011-06-08 78 views
2

該命令正​​在處理某些SQL Server數據庫,但不能處理其他數據庫。數據庫SQL問題

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 

有沒有我應該改變對數據庫的任何設置?

+1

爲什麼你會投它的兩倍?做數學,然後投下結果。如果你的測量是整天,爲什麼還要用小數? – mikeY 2011-06-08 14:30:15

+0

你想做什麼?你是否想要在幾年內獲得持續時間? – Raja 2011-06-08 14:54:59

+0

@mikeY,你需要小數來避免除法的整數運算。 – HLGEM 2011-06-08 15:01:41

回答

2

解決它通過設置:

SET NUMERIC_ROUNDABORT OFF 
0

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

不管怎樣,試試這個來代替,看看你得到溢出錯誤:

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