我们一般会接到一些统计时段的的需求,如下图所示
要求,每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分钟数据