2013-08-24 4 views
0

мне нужно сгруппировать строки из таблицы 24 часов с интервалом, как показано нижеMySql 24 часа интервалы выбора

// SELECT COUNT (user_id), дата (создано) в день из-за стола GROUP BY день //

SELECT * FROM таблицы GROUP BY DATE (создано)

но мне нужно выбор, чтобы быть сделаны с интервалом 24 ч, начиная с 12:00:00 не

00:00:00

Благодаря

+0

Вам нужна только дата? –

+0

Мне нужно перечислить группу строк таблицы с интервалом в 24 часа, начиная с 12:00:00 –

+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_ * -функции или 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.

+0

SELECT COUNT (id), DATE (created) AS ДЕНЬ ОТ пользователей GROUP BY DAY это количество идентификаторов созданных пользователей каждый день. но группировка начинается в 00:00:00. Мне нужна созданная группа, чтобы начать с 12:00:00, чтобы я мог подсчитывать пользователей, созданных каждые 24 часа. что я прошу, имеет смысл? –

+0

@MariusMarus О, вы только хотите сосчитать. Почему ты так не сказал? - Проверьте правильность! –

+0

Извините, мой бедный английский :) –

Смежные вопросы