sql >> Databáze >  >> RDS >> Mysql

MySQL:Záznamy vkládané po hodinách, za posledních 24 hodin

Pokud jste seskupili podle HOUR(time) pak byste měli použít HOUR(time) ve vybraných výrazech, nikoli time . Například:

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

Případně můžete seskupit podle výrazu, který chcete vrátit:

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 )

V případě, že by vás to zajímalo, je bezpečné zavolat NOW() vícekrát ve stejném dotazu, jako je tento. Z příručky :




  1. Výchozí formát DATE společnosti Oracle

  2. jak rychle zkopírovat velkou tabulku innodb

  3. Nastavte priority mezi procesy mysql

  4. Jak zobrazit datum v německém formátu na serveru SQL (T-SQL)