MySQL:选择最后一个完整的5分钟间隔

时间:2017-03-15 08:39:31

标签: mysql datetime intervals

我想从我的桌子中选择最后一个完整的5分钟间隔。

示例:

  • 现在时间:上午09:32 - >选择 - > 09:25 - 09:30
  • 现在时间:晚上10:44 - >选择 - > 10:35 - 10:40 pm

enter image description here

我知道如何将我的选择分组为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分钟间隔,如上例所示?

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)

我想我明白了:

select  
   a.end_time - Interval 5 minute as start_time,
   a.end_time
from
   (
    select 
      str_to_date(concat(date(now()), ' ', hour(now()),':',floor(minute(now())/5)*5),'%Y-%m-%d %H:%i') as end_time
  ) a

结果

enter image description here