Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gruppieren von Zeitstempeln in MySQL mit PHP

Peter

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

Ihre Ergebnismenge würde angesichts der obigen Daten wie folgt aussehen:

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

Viele weitere verwandte Funktionen finden Sie unter hier .

Bearbeiten

Nachdem ich anhand der Ausgabe Ihres Kommentars einige eigene Tests durchgeführt hatte, stellte ich fest, dass sich Ihre Datenbank in einem Zustand eines epischen Fehlers befindet . :) Sie verwenden INT als TIMESTAMPs. Das ist nie eine gute Idee. Es gibt keinen vertretbaren Grund, INT anstelle von TIMESTAMP/DATETIME zu verwenden.

Das heißt, Sie müssten mein obiges Beispiel wie folgt ändern:

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

Bearbeiten 2

Dazu können Sie zusätzliche GROUP BY-Klauseln verwenden:

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

Beachten Sie, dass ich FROM_UNIXTIME() der Kürze halber weggelassen habe.