MySql 24小时间隔选择

时间:2013-08-24 13:44:47

标签: mysql select intervals

我需要按照下面的24小时间隔对表中的行进行分组,如下所示

// SELECT count(user_id),DATE(已创建)为FROM FROM GROUP BY日//

SELECT * FROM table GROUP BY DATE(已创建)

但我需要从12:00:00而不是00:00:00

开始,每隔24小时进行一次选择

由于

1 个答案:

答案 0 :(得分:0)

使用以下SQL查询:

SELECT *, TIMESTAMPADD(HOUR, 12, DATE(TIMESTAMPADD(HOUR, -12, created))) AS grp
FROM table
ORDER BY created DESC

这会将最新添加的用户放在首位。如果您希望最老的用户位于最前端,则可以将DESC更改为ASC

另外,我添加的是grp列。它将帮助您在PHP中使用分组。 该列的结果是f.e. August, 24 2013 12:00:00+0000。每当此值更改时,您需要在PHP中创建一个新的组头。

现在,我可以为您提供一些代码,但这取决于您使用的是哪种数据库访问( mysqli _ * -functions或 PDO ),所以我不会详细介绍那个。

我可以提供的是一个链接,其中包含有关grouping records using a while loop的更多信息,这些信息是作为SO上不同问题的答案而提供的。

修改

要仅显示用户数(以及时间范围的开头),您将使用不同的方法:

SELECT COUNT(id), TIMESTAMPADD(HOUR, 12, DATE(TIMESTAMPADD(HOUR, -12, created))) AS grp
FROM table
GROUP BY grp
ORDER BY created DESC;

要查看有效的查询,请查看此SQL-Fiddle