我想从我的桌子中选择最后一个完整的5分钟间隔。
示例:
我知道如何将我的选择分组为5分钟
date_sub(date_sub(starttime, INTERVAL (MINUTE(starttime) % 5) MINUTE), INTERVAL (SECOND(starttime)) SECOND) as INTERVAL_START,
date_add(date_sub(date_sub(starttime, INTERVAL (MINUTE(starttime) % 5) MINUTE), INTERVAL (SECOND(starttime)) SECOND), INTERVAL 5 MINUTE) as INTERVAL_END,
我也知道如何选择最后5分钟
where (endtime between now()-Interval 5 minute and now())
但是如何获得最后一个完整的5分钟间隔,如上例所示?
答案 0 :(得分:1)
您的问题仍然不是很明确,因为您没有根据您的输入提及预期输出。但是,您可以使用此代码基于now()获取start_time和end_time。根据您的要求更改now()
。
select
date_sub(str_to_date(concat(hour(now()),':',floor(minute(now())/5)*5),'%H:%i'),interval 5 minute) as start_time,
str_to_date(concat(hour(now()),':',floor(minute(now())/5)*5),'%H:%i') as end_time,
now();
说明:首先将分钟数除以5,然后取出底线(删除小数)并将其乘以5.这将给出最近的结束时间。从中减去5分钟即可获得start_time。
答案 1 :(得分:0)
如果您只想将结果集限制为在最近gbk
的5分钟内发生的记录,那么您可以尝试以下操作:
endtime
答案 2 :(得分:0)
你很亲密:
SELECT *
FROM yourTable
WHERE endtime > (SELECT MAX(endtime) FROM yourTable) - INTERVAL 5 MINUTE
答案 3 :(得分:0)
使用
select ceil(minute(now())/5) as `x`
你将获得x(1-12),然后将它乘以5
如果我们是“32”则x = 7(32/5 = 6.x => 7)
between ((x-1)*5) and (x*5) = (7-1)*5 and 7*5 = 30-35
===添加====
将它连成一个小时
答案 4 :(得分:0)