2010-02-13 21 views
7

Tengo un montón de datos de fecha en una tabla MySQL como esto:Seleccione agrupaciones de fecha/hora en MySQL agrupados por hora

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" 

deseo seleccionar un informe que muestra los datos agrupados por hora, por ejemplo, :

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. 
... 

Básicamente quiero informar de la cantidad acumulada de registros que se produjo durante todas las horas del día. Entonces, el resultado final me daría un informe de, por ejemplo, 10 días, dividido en incrementos de 24 horas, para poder ver la cantidad de datos que hay durante una hora determinada en un día determinado.

TIA, Espero que puedan ayudar!

Respuesta

9

Es posible que desee utilizar la cláusula GROUP BY como en la siguiente consulta:

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); 

También es posible que desee comprobar la documentación de MySQL para mayor referencia sobre las funciones de fecha y hora:

+0

Sí, eso fue todo !!!! – Alexia

+0

funcionó para mí y ahorró mucho tiempo. gracias! – alpera

3
SELECT HOUR(datetime), COUNT(*) 
FROM table 
GROUP BY HOUR(datetime); 

Y Obtendrá dos campos: la hora y la cantidad de eventos durante esa hora.

+0

El problema con esta consulta es que no puede abarcar el informe durante 10 días. –

+0

Disculpa, eso no funciona, solo muestra las horas de un día, no puede abarcar con el tiempo. – Alexia