Mysql
 sql >> Database >  >> RDS >> Mysql

Raggruppamento di timestamp in MySQL con PHP

Pietro

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

Il tuo set di risultati, dati i dati di cui sopra, sembrerebbe tale:

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

È possibile trovare molte altre funzioni correlate qui .

Modifica

Dopo aver eseguito alcuni miei test in base all'output del tuo commento, ho determinato che il tuo database è in uno stato di epic fail . :) Stai usando INT come TIMESTAMP. Questa non è mai una buona idea. Non esiste un motivo giustificabile per utilizzare un INT al posto di TIMESTAMP/DATETIME.

Detto questo, dovresti modificare il mio esempio sopra come segue:

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

Modifica 2

Puoi utilizzare ulteriori clausole GROUP BY per raggiungere questo obiettivo:

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

Nota, ho omesso FROM_UNIXTIME() per brevità.