2009-09-21 20 views
12

Ho una tabella contenente i registri di accesso. Voglio sapere quanti accessi a resource_id '123' sono avvenuti in ogni ora in un giorno di 24 ore.Recupera le righe raggruppate per ora con MySQL

Il mio primo pensiero per il recupero di queste informazioni è solo scorrendo ogni ora e interrogando la tabella in ogni ciclo con qualcosa di simile ... and time like '$hour:%', dato che il campo time contiene i dati nel formato 15:47:55.

C'è un modo che posso group by le ore e recuperare ogni ora e il numero di righe all'interno di ogni ora in una singola query?

Il database è MySQL, la lingua è PHP.

+0

è la colonna "ora" in formato datetime? – Zenshai

+0

Si prega di inserire la struttura del database - avete un 'DATETIME' per il tempo di accesso? – Josh

+0

@Zenshai mi hai battuto di 41 secondi :-) – Josh

risposta

34
SELECT HOUR(MyDatetimeColumn) AS h, COUNT(*) 
FROM MyTable 
GROUP BY h; 
3

È possibile utilizzare la funzione HOUR per ottenere l'ora fuori dal tempo. Quindi dovresti essere in grado di raggruppare per quello.

Problemi correlati