sql >> Databáze >  >> RDS >> PostgreSQL

Jak vybrat záznamy z posledních 24 hodin pomocí PostgreSQL

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!

  1. Je lepší vytvořit index před naplněním tabulky daty, nebo poté, co jsou data na svém místě?

  2. Jak použít MAX() na výsledek dílčího dotazu?

  3. internacionalizovaný regulární výraz v postgresql

  4. Jaké je pořadí řádků MySQL pro SELECT * FROM název_tabulky;?