Mysql DateTime组15分钟

Gir*_*ane 5 mysql sql datetime group-by

我有一张看起来像这样的桌子

CREATE TABLE `time_table` (
 `id` INT(10) NOT NULL AUTO_INCREMENT,
 `creationDate` DATETIME NOT NULL,
 PRIMARY KEY (`id`)
)
Run Code Online (Sandbox Code Playgroud)

我基本上将某些记录的创建时间存储在表中.我知道如果我想要计算在15分钟间隔内创建的记录,我会使用这样的东西

SELECT FLOOR(UNIX_TIMESTAMP(creationDate)/900) AS t, 
COUNT(*) FROM time_table
GROUP BY t
Run Code Online (Sandbox Code Playgroud)

这给了我这样的东西

t          COUNT(*)
1434187    1
1434188    3
1434189    2
1434190    2
Run Code Online (Sandbox Code Playgroud)

我如何理解第一列?如果我想让它给我看一些像

t                 COUNT(*)
2:00pm - 2:15pm   1
2:15pm - 2:30pm   3
2:30pm - 2:45pm   2
2:45pm - 3:00pm   2
Run Code Online (Sandbox Code Playgroud)

据我所知,通过一些操作,我可以在下午2:15得到1434187.即使这可能是一个好的开始....然后用一些逻辑我可以显示整个时期.谢谢!

Jam*_*ack 7

一种方法是使用><为了获得范围内的所有内容,但您可能会发现这更简单:

SELECT ... 

GROUP BY ( 4 * HOUR( thistime ) + FLOOR( MINUTE( thistime ) / 15 )) 
Run Code Online (Sandbox Code Playgroud)

来自 http://forums.mysql.com/read.php?10,202789,202807


小智 7

这是我使用的解决方案:

SELECT  FROM_UNIXTIME(FLOOR( UNIX_TIMESTAMP(creationDate)/900 ) * 900) AS t, COUNT(*) FROM time_table GROUP BY t
Run Code Online (Sandbox Code Playgroud)

虽然它在4年后到来,但希望它对某人有用.


Pod*_*.io 5

答案2仅适用于24小时 - 试试这个;

SELECT ...

GROUP BY year(date),month(date),day(date),( 4 * HOUR( date ) + FLOOR( MINUTE( date ) / 15 )) 
Run Code Online (Sandbox Code Playgroud)