2009-09-21 11 views
12

Ich habe eine Tabelle mit Zugriffsprotokollen. Ich möchte wissen, wie viele Zugriffe auf Ressource-ID 123 in jeder Stunde an einem 24-Stunden-Tag aufgetreten sind.Abrufen von Zeilen gruppiert nach Stunden mit MySQL

Mein erster Gedanke für diese Informationen abrufen wird Looping nur jede Stunde durch und die Tabelle mit etwas in jeder Schleife Abfrage wie ... and time like '$hour:%', da das time Feld 15:47:55 Daten im Format hält.

Gibt es eine Möglichkeit, ich kann group by die Stunden und abrufen jede Stunde und die Anzahl der Zeilen innerhalb jeder Stunde in einer einzigen Abfrage?

Datenbank ist MySQL, Sprache ist PHP.

+0

ist die 'Zeit' Spalte im Datetime Format? – Zenshai

+0

Bitte Datenbankstruktur posten - haben Sie eine 'DATETIME' für die Zugriffszeit? – Josh

+0

@Zenshai du hast mich um 41 Sekunden übertroffen :-) – Josh

Antwort

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

Sie können die Funktion HOUR verwenden, um die Uhrzeit aus der Zeit zu bekommen. Dann sollten Sie in der Lage sein, danach zu gruppieren.

Verwandte Themen