如何基于MySQL的timestamp字段统计每分钟的新增记录数量
MySQL按1分钟分组统计新增记录数实现方法
假设你的表名为data_table,存储创建时间的timestamp字段为created_at,以下是两种可直接使用的实现方案:
方案1:DATE_FORMAT字符串截断(易读优先)
通过时间格式化将精度截断到分钟级别,同分钟的记录会分到同一组:
SELECT DATE_FORMAT(created_at, '%Y-%m-%d %H:%i') AS minute_time, COUNT(1) AS new_record_count FROM data_table -- 可选:添加时间范围过滤条件 -- WHERE created_at BETWEEN '2024-01-01 00:00:00' AND '2024-01-07 23:59:59' GROUP BY minute_time ORDER BY minute_time ASC;
方案2:时间戳取整计算(性能优先)
通过数值计算得到每分钟的起始时间戳,避免字符串格式化开销,适合大数据量表:
SELECT FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(created_at) / 60) * 60) AS minute_time, COUNT(1) AS new_record_count FROM data_table GROUP BY FLOOR(UNIX_TIMESTAMP(created_at) / 60) ORDER BY minute_time ASC;
补充说明
- 需调整统计间隔时,修改整除的数值即可:5分钟对应
300,1小时对应3600 - 若需要展示无新增记录的分钟(统计值为0),需先生成连续的分钟时间序列临时表,与上述统计结果做左连接即可
内容的提问来源于stack exchange,提问作者ensnare
相关产品推荐
相关产品推荐

