sqlserver累计某天8点到第二天8点的数据

sqlServer怎么累计一年中每天八点到第二天八点的数据啊

select sum(数据) from table groupby timeadd('hh', -8, 日期)

每天8点到第二天8点不就是整天吗,累计到一起的话直接 between 第一天8点 and 下一年第一天8点,就行。
如果是每天单独累计,建议每天定时任务累计;如果已有很多数据,可以先对日期时间做个转换,当天8点到下一天8点算到同一个新的日期叫统计日期,然后再对转换后的日期(即统计日期)分组统计。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7779785
  • 你也可以参考下这篇文章:sqlserver数据库时区问题
  • 您还可以看一下 赵玉老师的SQl Server数据库课程中的 1.Sqlserver数据库课程体系小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以使用如下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点。如果要查询其他年份的数据,只需要根据需求来修改时间范围即可。