我们一般会接到一些统计时段的的需求,如下图所示

 

 要求,每30分钟统计一次数据,或者每隔5分钟执行一次

 

sql的写法,如下所示,

select  DATE_FORMAT(CONCAT( DATE_FORMAT( ro.update_time, '%Y-%m-%d %H:' ), (FLOOR( MINUTE(ro.update_time)/30)* 30) ),'%H:%i'  time_hour from 10分钟一次

select  DATE_FORMAT(DATE_ADD(CONCAT( DATE_FORMAT( ro.update_time, '%Y-%m-%d %H:' ), (FLOOR( MINUTE(ro.update_time)/5)* 5) ),INTERVAL 5 MINUTE ),'%H:%i' ) time_hour  5分钟一次

 

如何取 前5分钟和后5分钟的时间段

select now() - INTERVAL ( TIME_TO_SEC( now()) MOD 300 + 300 ) SECOND FROM DUAL -- 当前时间前5分钟数据
select now() - INTERVAL ( TIME_TO_SEC( now()) MOD 300 ) SECOND FROM DUAL -- 当前时间后5分钟数据

posted on 2021-02-25 16:47  爱吃萝卜青菜  阅读(2277)  评论(0编辑  收藏  举报