sqlserver按时间统计每天17:30到第二日17:30为一天的数据
例如:7-1下午17:30到7-2下午17:30的数据总和算作7-2日的数据这样的,如何写语句呢?...
例如:7-1下午17:30到7-2下午17:30的数据总和算作7-2日的数据这样的,如何写语句呢?
展开
2个回答
展开全部
比如表里数如下
create table t
(begin_time datetime,
hj int)
insert into t values ('2013-07-01 00:00:00',10)
insert into t values ('2013-07-01 17:00:00',20)
insert into t values ('2013-07-01 18:00:00',24)
insert into t values ('2013-07-02 13:00:00',45)
这里要求统计两个区间,也就是前两条一个区间,后两条一个区间
select a.rq,sum(b.hj) hj
from
(select
convert(varchar(10),cast('2013-07-01 00:00:00' as datetime)+number,120) rq,
cast(replace(convert(varchar,dateadd(d,-1,cast('2013-07-01 00:00:00' as datetime)+number),120),'00:00:00','17:30:00') as datetime) begin_time,
cast(replace(convert(varchar,dateadd(d,0,cast('2013-07-01 00:00:00' as datetime)+number),120),'00:00:00','17:30:00') as datetime) end_time
from master..spt_values where type='P') a,
t b
where b.begin_time >= a.begin_time and b.begin_time<a.end_time
group by a.rq
其中括号里被命名为a的那堆,你可以拿出来单独运行一下,看看结果,实际上是一个算时间区间的东西
这个最后的结果就是
领会一下精神,不懂再问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是每一天都是前一天的17:30到当天的17:30算作当天的数据吗
追问
对 要统计一段时间的数据
追答
select datediff(s,'2013-07-01 17:30','2013-07-02 00:00')--23400
--下面为了计算天数包含17:30这个点,减少了1s
select convert(varchar,dateadd(s,23399,time),23) 日期,count(1)
from tb
group by convert(varchar,dateadd(s,23399,time),23)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询