2011-11-28 72 views
3

我正在尋找使用datepart運行SQL查詢將數據分成小時增量,然後使該查詢運行多天。目前,我只是將日期遞增一天,然後運行多個查詢。我想知道是否有一種方法可以將這一切合併爲一個查詢,以便爲整個日期範圍提供輸出。SQL Server - 按小時查詢多天

select datepart(hour, datetime), sum(calls) 
from dbo.gateway_concurrent_calls 
where datetime between 'MM/DD/YY' and 'MM/DD+1/YY' 
group by datepart(hour, datetime) 

這給出了這個輸出。

0 1220 
1 569 
2 391 
3 313 
4 161 
5 68 
6 42 
7 24 
8 19 
9 18 
10 23 
11 45 
12 90 
13 311 
14 566 
15 668 
16 688 
17 735 
18 718 
19 729 
20 701 
21 699 
22 683 
23 570 

回答

7

集團雙方的日期和時間:

select convert(date, datetime), datepart(hour, datetime), sum(calls) 
from dbo.gateway_concurrent_calls 
where datetime between 'MM/DD/YY' and 'MM/DD+1/YY' 
group by convert(date, datetime), datepart(hour, datetime) 
+2

除非有什麼我不知道的,轉換應該看起來像'convert(date,datetime)'或像'cast(datetime as date)'。除此之外,它是+1。 –

1

這個查詢將圓的datetime列到最接近的小時,同時保持日期部分也給你所尋求的結果,我相信:

select DATEADD(hour,DATEDIFF(hour,0,datetime),0), sum(calls) 
from dbo.gateway_concurrent_calls 
where datetime between @StartDate and @EndDate 
group by DATEADD(hour,DATEDIFF(hour,0,datetime),0) 

請注意,我假設開始和結束日期將提供作爲變量/參數 - 如果你打算繼續使用文字字符串,嘗試使用格式YYYYMMDD(用於日期),例如今天是20111129 - 此格式在SQL Server的區域設置中是明確的。