当前位置: 代码迷 >> Sql Server >> 关于两个日期间,该怎么解决
  详细解决方案

关于两个日期间,该怎么解决

热度:96   发布时间:2016-04-27 15:08:09.0
关于两个日期间
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 #
  相关解决方案