我希望使用datepart运行SQL查询以将数据拆分为每小时增量,然后使该查询运行多天。目前我只是将日期增加一天,然后运行多个查询。我想知道是否有办法将这个全部合并到一个查询中,该查询将为整个日期范围提供输出。
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
答案 0 :(得分:8)
按日期和小时分组:
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)
答案 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的区域设置中是明确的。