2013-01-11 184 views
3

我知道這是一個簡單的問題,但我卡住了。我單獨嘗試了DateDiff一天一小時,但我希望我的日期能夠檢測我的時間,如果它超過24小時。Datediff日期和小時(24小時)

例如:

Date1: 20/12/2011 
Time1: 9:00 

Date2: 21/12/2011 
Time2 : 13:00 

Days Taken: 1 
Time Taken: 28 

我要計算的日期和時間,所以1天,4個小時我期望的結果。

任何人都可以請幫助我如何做到這一點?欣賞。

+0

所有這些問題的答案假設你的類型是'DATETIME'但你的問題看起來,如果你可能有'DATE'並單獨存儲,你可以從'SQL服務器2008'辦起'TIME'。你能澄清嗎? – MarkD

+0

@MarkD亞,我的數據類型是DATETIME,我的日期和時間是分開存儲的。你能提供一些建議嗎?謝謝 – Bella

+0

當然,我可以 - 但我首先需要知道提供的答案有什麼問題嗎? – MarkD

回答

4

也許與MODULO幫助:

SELECT (
    DATEDIFF(dd, 
    CONVERT(datetime,'20/12/2011 09:00:00',104), 
    CONVERT(datetime,'21/12/2011 13:00:00',104)) 
) AS [days taken], 
(
    DATEDIFF(hh, 
    CONVERT(datetime,'20/12/2011 09:00:00',104), 
    CONVERT(datetime,'21/12/2011 13:00:00',104)) 
    % 24 
) AS [hours taken] 

結果:

DAYS TAKEN  HOURS TAKEN 
    1    4 

DEMO

-1

假設你正在使用SQL Server

Select datediff(hour,date1,date2)/24.0 from table 
+0

這將導致小時顯示爲幾天的一小部分。 – MarkD

2

在sql-server中;

declare @d1 datetime = '20111220 09:00:00' 
declare @d2 datetime = '20111221 13:00:00' 

select hours/24 daysTaken, hours%24 hoursTaken 
from (
    select datediff(hh,@d1,@d2) hours 
) A 

--Results 
daysTaken hoursTaken 
    1   4