Záznamy z SQL za poslední hodinu, den, měsíc

Při psaní aplikace využívající databási (např. MySQL) se dřív nebo později setkáme s potřebou vypisovat data za určité období do minulosti.

Vytvořit si požadované datum pro porovnávání je sice možné například v PHP, ale jako elegantnější řešení se mi jeví použití SUBDATE, NOW a INTERVAL přímo v SQL.

Funkce SUBDATE odečte od aktuálního data (NOW) stanovený interval.

Interval se zadává pomocí čísla a klíčového slova pro časový úsek (MINUTE, HOUR, DAY, YEAR). Pozor, klíčové slovo je vždy v jednotném čísle, tedy ne DAYS, HOURS a podobně.

Za poslední minutu

SELECT * FROM tabulka
WHERE datum > SUBDATE(NOW(), INTERVAL 1 MINUTE)

Za poslední hodinu

SELECT * FROM tabulka
WHERE datum > SUBDATE(NOW(), INTERVAL 1 HOUR)

Za poslední den (24 hodin)

SELECT * FROM tabulka
WHERE datum > SUBDATE(NOW(), INTERVAL 1 DAY)

Za poslední měsíc

SELECT * FROM tabulka
WHERE datum > SUBDATE(NOW(), INTERVAL 1 MONTH)

Za poslední rok

SELECT * FROM tabulka
WHERE datum > SUBDATE(NOW(), INTERVAL 1 YEAR)

V případě, že je potřeba vypsat záznamy za poslední měsíc a tabulka obsahuje i záznamy s datem v budoucnosti (vyšším než aktuálním) – třeba u článků, které mají teprve vyjít, je potřeba použít BETWEEN.

SELECT * FROM tabulka
WHERE datum BETWEEN NOW() AND SUBDATE(NOW(), INTERVAL 1 DAY)

Následující den

Někdy je naopak potřeba vypsat záznamy, které mají datum v následujícím období. I tady už je nutné použít BETWEEN a záporný INTERVAL.

SELECT * FROM tabulka
WHERE datum BETWEEN NOW() AND SUBDATE(NOW(), INTERVAL -1 DAY)

To je všechno. Líbil se vám článek a chcete se dozvědět, až vyjde další?

Sledujte:

 

Připomínky mi pište do komentářů ↓

PDO

MySQL přes PDO

PDO je PHP rozhraní pro pohodlnější práci s SQL databásí. Jaké přináší výhody a jak ho používat.

Transakce v MySQL

MySQL a transakce v PDO

K čemu slouží, jak a proč používat transakce při používání MySQL v PDO.

Zamykání tabulek

Zamykání MySQL tabulek

K čemu slouží, kdy a proč používat zamykání tabulek příkazem LOCK TABLE.

Rychlost SQL dotazu

Měření rychlosti SQL dotazu

Měření rychlosti provedení SQL dotazu.

Instalace Apache, PHP a MySQL za 30 vteřin

Instalace Apache, PHP a MySQL za 30 vteřin

Jak si ve Windows spustit vlastní Apache, PHP a MySQL na svém PC za půl minuty.

Komentáře