0

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

// SELECT count(user_id), DATE(created) as day FROM table GROUP BY day //

SELECT * FROM table GROUP BY DATE(created)

但我需要从 12:00:00 而不是 00:00:00 开始每隔 24 小时进行一次选择

谢谢

4

1 回答 1

0

使用以下 SQL 查询:

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

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

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

现在,我可以为您提供一些代码,但这取决于您使用的数据库访问类型(mysqli_* -functionsPDO),因此我不会对此进行详细介绍。

我可以为您提供一个链接,其中包含有关使用 while 循环对记录进行分组的更多信息,该链接已作为对 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

于 2013-08-24T14:40:42.100 回答