TIPS:MySQL按给定时间间隔分组统计

MySQL按给定时间间隔分组统计


需求一,查询每天8点到23点的数据

  在MySQL中,若要查询在一个指定时间段内(比如每天的8点到23点)的所有数据记录, 可以使用BETWEEN关键字结合日期函数来实现。 假设数据表名为your_table_name,时间字段名为time_column。以下是一个示例SQL查询语句,获取每天8点到23点之间的所有数据记录:

SELECT * 
FROM your_table_name 
WHERE HOUR(time_column) BETWEEN 8 AND 23;

  上述查询直接基于时间字段的小时部分进行筛选,但是需要注意的是,time_column是一个可以直接用HOUR()函数提取小时数的日期时间类型字段(如DATETIME或TIMESTAMP类型)。

需求二,查询指定时间段内,每天8点到23点的数据

  如果想要查询指定时间段内的每天8点到23点的所有数据,那么在上述SQL再加上时间查询语句即可:

SELECT * 
FROM your_table_name 
WHERE 
    time_column BETWEEN '2024-04-02 00:00:00' AND  '2024-04-06 23:59:59'
AND HOUR(time_column) BETWEEN 8 AND 23;

需求三,按照时间间隔分组统计

  如果想要查询指定时间段内的每天8点到23点的所有数据,并在按照指定秒钟数时间间隔统计,假如每隔5秒钟进行统计:

SELECT 
    CONCAT(DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:'), LPAD(floor(second(create_time)/ 5)*5, 2, '0')) timePoint,
    COUNT(*) totalCount
FROM your_table_name 
WHERE 
    time_column BETWEEN '2024-04-02 00:00:00' AND  '2024-04-06 23:59:59'
AND HOUR(time_column) BETWEEN 8 AND 23
GROUP BY
    timePoint;

  CONCAT(DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:'), LPAD(floor(second(create_time)/ 5)*5, 2, '0'))语句中的5就表示每间隔5秒钟进行分组统计,如果想要其它间隔时间直接修改即可。

需求四,分组统计某个时间点的数据

  上述SQL已经按照每间隔5秒钟进行了分组统计,那么如果现在又只想统计每个时间间隔的数据,又该怎样编写SQL呢:

SELECT 
    CONCAT(DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:'), LPAD(floor(second(create_time)/ 5)*5, 2, '0')) timePoint,
    COUNT(*) totalCount
FROM your_table_name 
WHERE 
    time_column BETWEEN '2024-04-02 00:00:00' AND  '2024-04-06 23:59:59'
AND HOUR(time_column) BETWEEN 8 AND 23
AND second(time_column) % 5 = 0
GROUP BY
    timePoint;

  上述SQL通过对具体时间的分钟数进行按照5求余,从而得到当前那一时刻点数据量,即只会统计秒钟能被5除尽的数据值,执行结果如下:

timePointtotalCount
2024-04-02 21:49:451
2024-04-02 21:49:502
2024-04-02 21:49:554

一键三连,让我的信心像气球一样膨胀!

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐只乐之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值