SQL怎样统计一段日期范围内每天晚上20:00到次日早上8:00所有的数据?

需求实现:随便取一段日期:2022-3-4——2022-3-17

如何按天分别统计出每天晚上20:00到次日早上8:00所有的数据?

如2022-3-4日20:00后数据——2022-3-5日早上8点前的数据加起来

一天的还可以算,但是一段日期连起来就不知道怎么加了。

收集的日期格式如下:2022-04-03 08:00:00

select cast(dateadd(hour,-8,日期) as date) 日期

不同的数据库,时间处理函数不一样,但是思路是一样的,即让时间进行偏移,让两个时间点都落在一天内,就可以进行group by 了。
比如你是想统计 "每天晚上20:00到次日早上8:00"(这里应该为7:59:59,否则要多减1秒才能放到前一天),那么可以把字段减8个小时,条件其实就变成了
“每天12:00:00到23:59:59”,再把日期给格式化成年月日,group by 这个日期就可以愉快的sum了

可以使用mysql8的新特性withrowup