2010-09-21 18 views
6

Tengo una tabla donde cada fila tiene una marca de tiempo. ¿Existe una consulta que pueda ejecutar que pueda contar el número de filas por hora? ¿Mostrando una fila por cada hora con un campo para la cantidad de filas abarcadas?número de filas mysql por hora

por ejemplo

id timestamp 

10 2010-09-19 21:05:05 

11 2010-09-19 22:05:30 

12 2010-09-19 23:05:05 

13 2010-09-19 23:05:05 

number of rows | hour 
1    21 
1    22 
2    23 

supongo que puede haber problemas con el uso de la hora, ya que habrá duplicados horas ... así que tal vez '2010-09-19 21' o simplemente un número que representa el período (por ejemplo, en el ejemplo 21 es 2010-09-19 1)

TIA

Respuesta

11

depende de lo grande que es el intervalo de fechas. Si todas las fechas caen dentro de un mes, por ejemplo, usted podría hacer esto:

select day(timestamp) as Day, hour(timestamp) as Hour, count(*) as Count 
from MyTable 
where timestamp between :date1 and :date2 
group by day(timestamp), hour(timestamp) 

Puede agrupar por año y mes, así si es necesario separar mejor los datos.

+0

+1 También es posible usar TO_DAYS() que es el número de días desde el año 0. –

+0

@RedFilter Puede decirnos cómo extender el proceso a meses y años? – Mawg

2
SELECT HOUR(hour) as hour, COUNT(*) as num_rows FROM `TABLE` GROUP BY HOUR(hour) 
Cuestiones relacionadas