SQL Server - 按小时查询,多天查询

时间:2011-11-28 21:54:51

标签: sql sql-server

我希望使用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

2 个答案:

答案 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的区域设置中是明确的。