关于两个日期间
ID 开始时刻 结束时刻
134217743 2007-01-22 23:00:06.000 2007-01-23 23:04:34.000
134217838 2007-01-23 22:52:20.000 2007-01-23 23:04:44.000
现在需要统计出,每天每个小时每类ID的在线人数,只要有在某个小时段内就算在线一次,如第二条记录134217838 2007-01-23 22:52:20.000 2007-01-23 23:04:44.000
则需统计出:
134217838 2007-01-23 22
134217838 2007-01-23 23
第一条则统计出:
134217743 2007-01-22 23
134217743 2007-01-23 0
134217743 2007-01-23 1
。
。
。
134217743 2007-01-23 22
134217743 2007-01-23 23
谢谢各位!帮忙解决问题,帮忙顶!
------解决方案--------------------declare @a table(ID varchar(20),开始时刻 smalldatetime,结束时刻 smalldatetime)
insert @a select '134217743 ', '2007-01-22 23:00:06.000 ', '2007-01-23 23:04:34.000 '
union all select '134217838 ', '2007-01-23 22:52:20.000 ', '2007-01-23 23:04:44.000 '
select top 100 id=identity( int,0,1) into # from syscolumns a,syscolumns b
select a.id,
convert(varchar(10),dateadd(hour,b.id,开始时刻),120)日期,
datepart(hour,dateadd(hour,b.id,开始时刻)) 时间数
from @a a,# b
where datediff(hour,dateadd(hour,b.id,开始时刻),结束时刻)> =0
order by a.id,日期,时间数
drop table #