我有一张看起来像这样的表
CREATE TABLE `time_table` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`creationDate` DATETIME NOT NULL,
PRIMARY KEY (`id`)
)
我基本上将某些记录的创建时间存储在表中。我知道如果我想要计算在15分钟间隔内创建的记录,我会使用类似的东西
SELECT FLOOR(UNIX_TIMESTAMP(creationDate)/900) AS t,
COUNT(*) FROM time_table
GROUP BY t
这给了我这样的东西
t COUNT(*)
1434187 1
1434188 3
1434189 2
1434190 2
如何理解第一列?如果我想让它给我看一些像
的东西t COUNT(*)
2:00pm - 2:15pm 1
2:15pm - 2:30pm 3
2:30pm - 2:45pm 2
2:45pm - 3:00pm 2
据我所知,通过一些操作,我可以在下午2:15得到1434187。即使这可能是一个好的开始....然后用一些逻辑我可以显示整个时期。谢谢!
答案 0 :(得分:7)
一种方法是使用>
和<
来获取范围内的所有内容,但您可能会发现这更简单:
SELECT ...
GROUP BY ( 4 * HOUR( thistime ) + FLOOR( MINUTE( thistime ) / 15 ))
答案 1 :(得分:7)
以下是我使用的解决方案:
SELECT FROM_UNIXTIME(FLOOR( UNIX_TIMESTAMP(creationDate)/900 ) * 900) AS t, COUNT(*) FROM time_table GROUP BY t
虽然它在4年后到来,但希望它对某人有用。
答案 2 :(得分:5)
答案2仅适用于24小时 - 试试这个;
SELECT ...
GROUP BY year(date),month(date),day(date),( 4 * HOUR( date ) + FLOOR( MINUTE( date ) / 15 ))