如何从一个句点(datetimefrom和datetimeto)字段计算每半小时的记录?

时间:2013-10-16 07:34:41

标签: sql sql-server stored-procedures

我有一张桌子,看起来如下所示:

 Id   Date        ScheduledTimeFrom     ScheduledTimeTo      ActualTimeFrom       ActualTimeTo
 1   2013-01-01   1899-12-30 07:00:00   1899-12-30 18:00:00  1899-12-30 07:23:00  1899-12-30 17:15:00 

我需要每半小时计算一下有多少条记录,输出应该是:

 Time      Actual Count:
 7:00      4
 7:30      4
 8:00      4
 8:30      4
 9:00      4
 9:30      5
 10:00     5
 10:30     6
 11:00     7
 11:30     8
 12:00     8
 12:30     8
 13:00     8
 13:30     8
 14:00     8
 14:30     8
 15:00     7
 15:30     7
 16:00     7
 16:30     6
 17:00     5
 17:30     4
 18:00     4

我已经尝试制作一个帮助表,每个半小时应该保持时间。我已经使用包含数据的表加入了这个helpertable,之后我尝试使用group by function但它没有工作。

我的查询就像:

Create table period (timefrom datetime, timeto datetime)
insert into period
select '1899-12-30 07:00:00.000', '1899-12-30 07:30:00.000'
Union all
select '1899-12-30 07:30:00.000', '1899-12-30 08:00:00.000'


select * 
from period p left join table1 t on t.ActualTimeFrom < p.timeto and t.ActualTimeTo  >=p.timefrom

Grouping this give me no desired result....

任何人都知道如何得出结果?

P.S。我正在使用sql server 2005。

1 个答案:

答案 0 :(得分:0)

在窥探并测试它之后,看起来这个日期函数可能就是答案:

DATEADD(mi,DATEDIFF(mi,0,YOUR_DATE_COLUMN)/30*30,0)