sql >> Database >  >> RDS >> Mysql

MySQL:records ingevoegd per uur, voor de afgelopen 24 uur

Als je hebt gegroepeerd op HOUR(time) dan moet je HOUR(time) . gebruiken in uw geselecteerde uitdrukkingen, en niet time . Bijvoorbeeld:

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

U kunt ook groeperen op de uitdrukking die u wilt retourneren:

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 )

Mocht je je dit afvragen, het is veilig om NOW() . te bellen meerdere keren in dezelfde query als deze. Uit de handleiding :




  1. Hoe een onbeperkt aantal tekens opslaan in Oracle 11g?

  2. Met de juiste tools werkt het afstemmen snel

  3. SQLite JSON_GROUP_OBJECT()

  4. Postgres is de coolste database – Reden #2:The License