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

MySQL:Stundenweise eingefügte Datensätze für die letzten 24 Stunden

Wenn Sie nach HOUR(time) gruppiert haben dann sollten Sie HOUR(time) verwenden in Ihren ausgewählten Ausdrücken und nicht time . Zum Beispiel:

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

Alternativ können Sie nach dem Ausdruck gruppieren, den Sie zurückgeben möchten:

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 )

Falls Sie sich fragen, ist es sicher, NOW() aufzurufen mehrmals in derselben Abfrage wie dieser. Aus dem Handbuch :