Někdy může být nutné získat záznamy za posledních 24 hodin nebo vybrat řádky za posledních 24 hodin pro vytváření přehledů a analýzy. Zde je návod, jak vybrat záznamy za posledních 24 hodin pomocí PostgreSQL.
Získejte záznamy za posledních 24 hodin v PostgreSQL
Zde je SQL dotaz pro získání záznamů za posledních 24 hodin v PostgreSQL. Řekněme, že máte následující tabulku prodej (datum_objednávky, částka) .
postgres-# create table sales(order_date timestamp, amount int); postgres-# insert into sales(order_date,amount) values('2020-06-07 01:00:00',200), ('2020-06-07 02:30:00',350), ('2020-06-07 04:40:00',410), ('2020-06-07 12:10:00',600), ('2020-06-07 15:00:00',300), ('2020-06-07 18:55:00',450), ('2020-06-07 21:00:00',1200), ('2020-06-08 03:00:00',800), ('2020-06-08 05:30:00',900), ('2020-06-08 07:20:00',100), ('2020-06-08 10:10:00',250), ('2020-06-08 12:05:00',300), ('2020-06-08 13:30:00',200); postgres-# select * from sales; +---------------------+--------+ | order_date | amount | +---------------------+--------+ | 2020-06-07 01:00:00 | 200 | | 2020-06-07 02:30:00 | 350 | | 2020-06-07 04:40:00 | 410 | | 2020-06-07 12:10:00 | 600 | | 2020-06-07 15:00:00 | 300 | | 2020-06-07 18:55:00 | 450 | | 2020-06-07 21:00:00 | 1200 | | 2020-06-08 03:00:00 | 800 | | 2020-06-08 05:30:00 | 900 | | 2020-06-08 07:20:00 | 100 | | 2020-06-08 10:10:00 | 250 | | 2020-06-08 12:05:00 | 300 | | 2020-06-08 13:30:00 | 200 | +---------------------+--------+
Bonusové čtení:Jak zvýšit maximální počet připojení v PostgreSQL
Získejte řádky za posledních 24 hodin v PostgreSQL
Zde je dotaz SQL pro získání záznamů za posledních 24 hodin v PostgreSQL.
postgres-# select * from sales where order_date > now() - interval '24 hours'; +---------------------+--------+ | order_date | amount | +---------------------+--------+ | 2020-06-07 15:00:00 | 300 | | 2020-06-07 18:55:00 | 450 | | 2020-06-07 21:00:00 | 1200 | | 2020-06-08 03:00:00 | 800 | | 2020-06-08 05:30:00 | 900 | | 2020-06-08 07:20:00 | 100 | | 2020-06-08 10:10:00 | 250 | | 2020-06-08 12:05:00 | 300 | | 2020-06-08 13:30:00 | 200 | +---------------------+--------+
Ve výše uvedeném SQL dotazu používáme systémovou funkci PostgreSQL now() abyste získali aktuální datum a čas. Potom pomocí klauzule INTERVAL vybereme ty řádky, kde je datum_objednávky spadá do posledních 24 hodin od aktuálního data.
Bonusové čtení:Tipy pro ladění výkonu PostgreSQL
Můžete také zadat časový interval ve dnech namísto hodin.
postgres-# select * from sales where order_date > now() - interval '1 day'; +---------------------+--------+ | order_date | amount | +---------------------+--------+ | 2020-06-07 15:00:00 | 300 | | 2020-06-07 18:55:00 | 450 | | 2020-06-07 21:00:00 | 1200 | | 2020-06-08 03:00:00 | 800 | | 2020-06-08 05:30:00 | 900 | | 2020-06-08 07:20:00 | 100 | | 2020-06-08 10:10:00 | 250 | | 2020-06-08 12:05:00 | 300 | | 2020-06-08 13:30:00 | 200 | +---------------------+--------+
Bonusové čtení:5 nejlepších nástrojů pro monitorování dotazů PostgreSQL
Pokud chcete vybrat záznamy pouze pro současný den a ne za posledních 24 hodin, použijte následující dotaz.
postgres-# select * from sales where date_trunc('date',order_date) = current_date; +---------------------+--------+ | order_date | amount | +---------------------+--------+ | 2020-06-08 03:00:00 | 800 | | 2020-06-08 05:30:00 | 900 | | 2020-06-08 07:20:00 | 100 | | 2020-06-08 10:10:00 | 250 | | 2020-06-08 12:05:00 | 300 | | 2020-06-08 13:30:00 | 200 | +---------------------+--------+
Ve výše uvedeném dotazu získáte řádky pouze s aktuálním datem, nikoli za posledních 24 hodin. Funkci DATE_TRUNCT používáme k výběru pouze těch řádků, kde je hodnota data order_date stejná jako hodnota data systémové proměnné CURRENT_DATE, tedy aktuální datum.
Ubiq usnadňuje vizualizaci dat během několika minut a sledování na řídicích panelech v reálném čase. Zkuste to ještě dnes!