2014-11-25 39 views
2

當我在SQL Server中的SELECT語句中使用DateDiff,我得到一個int值回:問題有則DateDiff /鈮在SQL Server

select DATEDIFF(day,'01/01/2011','15/05/2011') 
from Table1 

結果是:134

select DATEDIFF(day,'01/01/2011','15/05/2011')/15 
from Table1 

結果是:8

select cast(DATEDIFF(day,'01/01/2011','15/05/2011')/15 as Decimal(9,2)) 
from Table1 

Res ULT是:8.00

但在現實的結果是:8.9333333

我怎樣才能改變結果從intDouble

我想得到結果8.9333333 - 我該怎麼做?

回答

3

問題是你在分割後使用CAST。如果您在CAST後執行除法,你會得到答案,你想:

select 
    cast(DATEDIFF(day,'01/01/2011','15/05/2011') as Decimal(9,2))/15 
from Table1 
+0

謝謝您的回答,其正確的:) – 2014-11-25 11:25:29

3

您需要先投你的投入劃分爲十進制:

select cast(DATEDIFF(day,'2011-01-01','2011-05-15') as Decimal(9,2))/15.0 

否則,你將一整數由一個整數 - 你會得到一個整數。如果你在分割後將這個數字轉換成小數點,你將得到8.0。

+0

謝謝您的回答,它的吧:) – 2014-11-25 11:26:52

1
SELECT CAST(DATEDIFF(day,'01/01/2011','15/05/2011') AS Decimal(9,2))/15 
FROM Table1 
+0

感謝所有,你的答案是正確的:) – 2014-11-25 11:24:39