本文小编为大家详细介绍“mysql怎么查询过去24小时内每小时数据量”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql怎么查询过去24小时内每小时数据量”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
获取过去24小时每小时数据量(没有为0)
时间段要求精确到分钟,即:10.33 ~ 11.33,11.33~12.33……
第一步:获取24个时间点:
1.使用数据量一定大于24的表(可以是数据库自带的,也可以是自己项目的)
SET @i=-1; SELECT DATE_SUB( NOW(),INTERVAL ( (@i:=@i+1) ) HOUR ) AS 'time' FROM mysql.help_category WHERE @i<23
2.建一个24个数据量的表
SET @i=-1; SELECT DATE_SUB( NOW(), INTERVAL((@i:=@i+1)) HOUR) AS 'time' FROM (SELECT * FROM (SELECT '1' AS a UNION SELECT '2' UNION SELECT '3' UNION SELECT '4' ) AS a JOIN ( SELECT '1' UNION '2' UNION SELECT '3' UNION SELECT '4' UNION SELECT '5' UNION SELECT '6' ) AS b ) AS c WHERE @i<23
NOW() 获取当前时间,也是最后一个时间节点
DATE_SUB() 函数从日期减去指定的时间间隔
INTERVAL 关键字可以用于计算时间间隔
HOUR 间隔类型(小时)
使用格式:DATE_SUB(date,INTERVAL expr type)
获取的时间点如下:
第二步:将要查询的表的时间向右偏移至整点,并查询时段内数据量:
将10.33 ~ 11.33之间的数据的时间,显示为:11.00~12.00
这样小时为11的数据就是原数据库中10.33 ~ 11.33的数据,方便之后的查询
SELECT DATE_FORMAT(DATE_SUB( create_time,INTERVAL MINUTE(NOW())-60 MINUTE ) ,'%Y-%m-%d %H') AS date, count(*) AS num FROM mytable GROUP BY date
结果如下:
第二步:多表连接查询:
SET @i=-1; SELECT t.time, ifnull(num,0) AS count FROM (SELECT DATE_SUB( NOW(),INTERVAL ( (@i:=@i+1) ) HOUR ) AS 'time' FROM mysql.help_category where @i<23) AS t LEFT JOIN (SELECT DATE_FORMAT(DATE_SUB( create_time,INTERVAL MINUTE(NOW())-60 MINUTE ) ,'%Y-%m-%d %H') AS date, count(*) AS num FROM mytable GROUP BY date ) AS sa ON sa.date = DATE_FORMAT( t.time,'%Y-%m-%d %H') GROUP BY t.time
结果如下:
count表示的是时间节点前一个小时的数据量,不包含此节点,如果要包含此节点,可以将上面的60改成59
1.通过sql查询每小时的数据总数,没有先不管
SELECT hour(表_时间) hour, count(表_id) count FROM 表_name //限制年月日(current_date 2022-03-05) WHERE date_format(表_时间, '%Y-%m-%d') = current_date//格式化时间 GROUP BY date_format(表_时间, '%Y%m%d-%H'), hour//按每小时分组
2.通过map,数组工具把没有数据的小时置为0。
读到这里,这篇“mysql怎么查询过去24小时内每小时数据量”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。