Mysql GROUP BY时间戳间隔已过去的时间间隔

时间:2018-08-28 15:48:24

标签: mysql group-by timestamp

是否可以仅选择间隔已过去的记录?

例如在带有分组依据的表中进行选择,如下所示: TABLE (timestamp(timestamp), name(VARCHAR))

timestamp            name  
-------------------  ----  
2010-11-16 10:30:01  John  
2010-11-16 10:30:02  John  
2010-11-16 10:30:03  John  
2010-11-16 10:30:31  John  
2010-11-16 10:30:32  John  
2010-11-16 10:30:33  John 

查询:

SELECT max(timestamp), name, count(name) 
FROM table 
GROUP BY UNIX_TIMESTAMP(timestamp) DIV 30, name

结果:

timestamp            name       count(name)  
    -------------------  ----   -----------
    2010-11-16 10:30:03  John     3 
    2010-11-16 10:30:33  John     3

这将根据以下记录进行分组:

hour:minute:00 to hour:minute:29 来自: hour:minute:30 to hour:minute:59

如果我在10:30:55进行查询,我只想获取从前一个间隔10:30:0010:30:29(或更旧)的记录,而没有在{{1}之间添加记录}至10:30:30

换句话说,如果我在某个时间间隔内查询,则等待它通过,然后再显示记录。 请注意,查询可能不会总是在同一时间(10:30:59或第二时间进行查询。{p>

因此该子句的结果应为:

10:30:55

例如,它是在10:30:51制造的。

1 个答案:

答案 0 :(得分:0)

SQL DEMO

imageSource

我对当前日期bitmap can't be converted implicitly to imageSource. 进行了硬编码,但是您可以改用SELECT max(timestamp), name, count(name) FROM table1 WHERE UNIX_TIMESTAMP(timestamp) DIV 30 < UNIX_TIMESTAMP('2010-11-16 10:30:55') DIV 30 GROUP BY UNIX_TIMESTAMP(timestamp) DIV 30, name ; 函数

输出

'2010-11-16 10:30:55'

如果只想要最后一个组,则添加

NOW()