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

MySQL:record inseriti per ora, per le ultime 24 ore

Se hai raggruppato per HOUR(time) quindi dovresti usare HOUR(time) nelle tue espressioni selezionate e non time . Ad esempio:

SELECT HOUR(time), COUNT(*)
FROM `records`
WHERE time > DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY HOUR(time)
ORDER BY HOUR(time)

In alternativa puoi raggruppare in base all'espressione che vuoi restituire:

SELECT COUNT(*), FLOOR( TIME_TO_SEC( TIMEDIFF( NOW(), time)) / 3600 )
FROM `records`
WHERE time > DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY FLOOR( TIME_TO_SEC( TIMEDIFF( NOW(), time)) / 3600 )
ORDER BY FLOOR( TIME_TO_SEC( TIMEDIFF( NOW(), time)) / 3600 )

Nel caso te lo stessi chiedendo, è sicuro chiamare NOW() più volte nella stessa query come questa. Dal manuale :