Выберите дату / время группировки в MySQL, сгруппированные по часам - PullRequest
7 голосов
/ 13 февраля 2010

У меня есть куча данных о дате в таблице MySQL, как это:

2010-02-13 1:00:00, "soma data"
2010-02-13 1:25:00, "soma data"
2010-02-13 1:37:00, "soma data"
2010-02-13 2:12:00, "soma data"

Я хочу выбрать отчет, который показывает данные, сгруппированные по часам, например:

On Feb 13, during the hour from 1:00 pm to 1:59 pm, there were 3 data points.
On Feb 13, during the hour from 2:00 pm to 2:59 pm, there was 1 data points.
...

В основном я хочу сообщить о совокупном количестве записей, которые происходили в течение каждого часа дня. Таким образом, конечный результат дал бы мне отчет, скажем, за 10 дней, разбитый на 24 часа, чтобы я мог видеть, сколько данных есть за любой данный час в любой данный день.

TIA, надеюсь, ты поможешь!

Ответы [ 2 ]

12 голосов
/ 13 февраля 2010

Вы можете использовать предложение GROUP BY, как в следующем запросе:

SELECT 
    COUNT(*),
    YEAR(dateTimeField),
    MONTH(dateTimeField),
    DAY(dateTimeField),
    HOUR(dateTimeField)
FROM 
    yourTable
WHERE
    dateTimeField >= '2010-02-04 00:00:00' AND
    dateTimeField < '2010-02-14 00:00:00'
GROUP BY 
    YEAR(dateTimeField), 
    MONTH(dateTimeField),
    DAY(dateTimeField),
    HOUR(dateTimeField);

Вы также можете проверить документацию MySQL для получения дополнительной информации о функциях даты и времени:

3 голосов
/ 13 февраля 2010
SELECT HOUR(datetime), COUNT(*)
FROM table
GROUP BY HOUR(datetime);

Вы получите два поля: час и количество событий за этот час.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...