34,590
社区成员
发帖
与我相关
我的任务
分享
where cast(TIME as datetime)>='1900-01-01 14:00'
declare @t table(rq char(10),sj char(8),sl int)
insert @t select '2008-05-20','12:00:00',1
insert @t select '2008-05-20','13:00:00',2
insert @t select '2008-05-20','14:00:00',3
insert @t select '2008-05-20','15:00:00',4
insert @t select '2008-05-20','16:00:00',5
insert @t select '2008-05-21','08:00:00',6
insert @t select '2008-05-21','12:00:00',7
insert @t select '2008-05-21','15:00:00',8
insert @t select '2008-05-22','16:00:00',9
declare @sj char(80)
set @sj = '14:00:00'
select riqi = datepart(day,cast(rq+' '+sj as datetime) -@sj),sum(sl) from @t
group by datepart(day,cast(rq+' '+sj as datetime) -@sj)
/*
riqi
----------- -----------
19 3
20 25
21 8
22 9
*/
create table #t1
(
id int identity(1,1),
rq varchar(10),
tm varchar(8)
)
insert #t1 select '2008-05-25','8:12:12'
insert #t1 select '2008-05-26','12:12:12'
insert #t1 select '2008-05-26','15:12:12'
insert #t1 select '2008-05-26','17:12:12'
insert #t1 select '2008-05-27','15:12:12'
select
case when cast(rq+' '+tm as datetime)>rq+' 14:00:00.000'
then cast(rq as varchar)+' 14:00:00.000 ' + convert(varchar(10),dateadd(day,1,rq),120)+' 14:00:00.000'
else convert(varchar(10),dateadd(day,-1,rq),120)+' 14:00:00.000 ' +cast(rq as varchar)+' 14:00:00.000' end as 时间段,
count(*)
from #t1 where
cast(rq+' '+tm as datetime)>'2008-5-25 8:12:12'
group by
case when cast(rq+' '+tm as datetime)>rq+' 14:00:00.000'
then cast(rq as varchar)+' 14:00:00.000 ' + convert(varchar(10),dateadd(day,1,rq),120)+' 14:00:00.000'
else convert(varchar(10),dateadd(day,-1,rq),120)+' 14:00:00.000 ' +cast(rq as varchar)+' 14:00:00.000' end
/*
时间段 count
2008-05-25 14:00:00.000 2008-05-26 14:00:00.000 1
2008-05-26 14:00:00.000 2008-05-27 14:00:00.000 2
2008-05-27 14:00:00.000 2008-05-28 14:00:00.000 1
*/
where convert(datetime,RQ+' '+TIME) between 时间1 and 时间2