Группировка меток времени в MySQL с PHP

Тестирование BlaM включало все вызовы DB, выполненные WordPress. При совершении меньшего количества вызовов DB Вы будете видеть, что увеличение производительности кэшей кода операции еще более поразительно.

7
задан Peter Craig 27 July 2009 в 01:15
поделиться

1 ответ

Питер

SELECT COUNT(*), HOUR(timecode)
FROM timecodeTable
GROUP BY HOUR(timecode);

Ваш набор результатов, учитывая приведенные выше данные, будет выглядеть так:

+----------+----------------+
| COUNT(*) | HOUR(timecode) |
+----------+----------------+
|       10 |             18 | 
+----------+----------------+

Многие другие связанные функции можно найти здесь .

Править

Проведя несколько собственных тестов на основе результатов вашего комментария, я определил, что ваша база данных находится в состоянии эпического сбоя . :) Вы используете INT как TIMESTAMP. Это никогда не бывает хорошей идеей. Нет веских причин для использования INT вместо TIMESTAMP / DATETIME.

Тем не менее, вам придется изменить мой приведенный выше пример следующим образом:

SELECT COUNT(*), HOUR(FROM_UNIXTIME(timecode))
FROM timecodeTable
GROUP BY HOUR(FROM_UNIXTIME(timecode));

Редактировать 2

Вы можете использовать дополнительные предложения GROUP BY для достижения это:

SELECT 
  COUNT(*),
  YEAR(timecode),
  DAYOFYEAR(timecode),
  HOUR(timecode)
FROM timecodeTable
GROUP BY YEAR(timecode), DAYOFYEAR(timecode), HOUR(timecode);

Обратите внимание, что для краткости я опустил FROM_UNIXTIME ().

13
ответ дан 6 December 2019 в 19:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: