我需要按照下面的24小时间隔对表中的行进行分组,如下所示
// SELECT count(user_id),DATE(已创建)为FROM FROM GROUP BY日//
SELECT * FROM table GROUP BY DATE(已创建)
但我需要从12:00:00而不是00:00:00
开始,每隔24小时进行一次选择由于
答案 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。