2012-03-01 87 views
22

我需要比較兩個日期並返回兩個小數位之間的天數。TSQL DateDiff返回小數點後兩位的天數

例如:

比較

SubmittedDate = 2012-02-29 07:02:55.000 

FirstCall = 2012-02-29 12:12:19.000 

即在5小時時的差異。因此,我將返回0.2天

我曾嘗試:

CAST(DATEDIFF(Hour, SubmittedDate, FirstCall)/30.0 AS DECIMAL(5,2)) As HoursBeforeFirstCall 
CAST(DATEDIFF(Day, SubmittedDate, FirstCall) AS DECIMAL(5,2)) As HoursBeforeFirstCall 

無似乎工作。

回答

32

取而代之以DateDiff,然後除以86400.0。小數點是必需的。

+0

這個偉大的工程。有沒有辦法我可以把它降到2位小數 – 2013-01-22 16:27:21

1

這個怎麼樣。

select convert(decimal(12,2),convert(decimal(12,2),datediff(second,'2012-02-29 07:02:55.000','2012-02-29 12:12:19.000'))/60/60/24) 
3

當您將一個日期表示爲一個數字時,每一天都已經用1.0「單位」表示。要將兩個日期的時間跨度作爲小數點,可以將它們相減。

SELECT CAST((@FirstCall - @SubmittedDate) AS NUMERIC(10, 2)) 
+0

如果有人打算使用這種方法,我相信你會想要除以'365.2425' – daveomcd 2016-05-11 13:21:26

+0

@daveomcd爲什麼?問題在於要求時間跨度爲幾天,而不是幾年,而且我認爲無論如何,大多數情況下您的計算結果都不準確。 – JackAce 2016-05-11 16:39:56

+0

我的歉意錯過了我猜想的那幾天......爲什麼不是多年的正確? – daveomcd 2016-05-11 17:42:13

0

這裏是我做了什麼:

ROUND(SUM(DATEDIFF(ss,StartDateTime,EndDateTime)/60.0/60.0), 2)