Используйте следующий 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_ * -функции или PDO), поэтому я не буду вдаваться в подробности об этом.
Что я могу предоставить, это ссылка для вас, содержащая дополнительную информацию о grouping records using a while loop, которая была предоставлена в качестве ответа на другой вопрос здесь, на SO.
EDIT
Чтобы отобразить только количество пользователей (и начало периода времени), вы должны использовать другой подход:
SELECT COUNT(id), TIMESTAMPADD(HOUR, 12, DATE(TIMESTAMPADD(HOUR, -12, created))) AS grp
FROM table
GROUP BY grp
ORDER BY created DESC;
Чтобы увидеть запрос в действии, проверить это SQL-Fiddle.
Вам нужна только дата? –
Мне нужно перечислить группу строк таблицы с интервалом в 24 часа, начиная с 12:00:00 –
Какую совокупную функцию вы хотите применить? Если вы хотите отобразить все записи, вы должны сделать группировку программно ... –