sqlServer怎么累计一年中每天八点到第二天八点的数据啊
select sum(数据) from table groupby timeadd('hh', -8, 日期)
每天8点到第二天8点不就是整天吗,累计到一起的话直接 between 第一天8点 and 下一年第一天8点,就行。
如果是每天单独累计,建议每天定时任务累计;如果已有很多数据,可以先对日期时间做个转换,当天8点到下一天8点算到同一个新的日期叫统计日期,然后再对转换后的日期(即统计日期)分组统计。
我可以使用如下SQL查询语句来累计某一年中每天八点到第二天八点的数据量:
SELECT CONVERT(VARCHAR(10),dateadd(hh, -8, [Time]), 112) as [日期], COUNT(*) as [数据量]
FROM [Table]
WHERE dateadd(hh, -8, [Time]) >= '2021-01-01 08:00:00' AND dateadd(hh, -8, [Time]) < '2022-01-01 08:00:00'
GROUP BY CONVERT(VARCHAR(10),dateadd(hh, -8, [Time]), 112)
在该SQL查询语句中,将查询的时间都转换成了“当天的零点”作为日期,而后通过GROUP BY 来统计该日期的数据量。其中需要注意的是,当天8点到第二天8点的数据量,其实是查询当前日期的前一天晚上8点到当前日期晚上8点内的数据量,因此我使用了“dateadd(hh, -8, [Time])”来将时间加8小时,然后再转换成日期。
另外,需要将查询的时间范围设定在某一年内,例如上述SQL查询语句中的时间范围是从2021年1月1日8点到2022年1月1日8点。如果要查询其他年份的数据,只需要根据需求来修改时间范围即可。