sql >> Base de Datos >  >> RDS >> Mysql

Agrupación de marcas de tiempo en MySQL con PHP

Pedro

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

Su conjunto de resultados, dados los datos anteriores, se vería así:

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

Se pueden encontrar muchas más funciones relacionadas aquí .

Editar

Después de hacer algunas pruebas propias basadas en el resultado de su comentario, determiné que su base de datos se encuentra en un estado de error épico. . :) Estás usando INT como TIMESTAMPs. Esto nunca es una buena idea. No hay ninguna razón justificable para usar un INT en lugar de TIMESTAMP/DATETIME.

Dicho esto, tendría que modificar mi ejemplo anterior de la siguiente manera:

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

Editar 2

Puede usar cláusulas GROUP BY adicionales para lograr esto:

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

Tenga en cuenta que omití FROM_UNIXTIME() por brevedad.