sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan vælger du poster fra sidste 24 timer ved hjælp af PostgreSQL

Nogle gange skal du muligvis hente registreringer fra de seneste 24 timer eller vælge rækker fra de sidste 24 timer til rapportering og analyse. Sådan vælger du poster fra sidste 24 timer ved hjælp af PostgreSQL.


Få poster fra sidste 24 timer i PostgreSQL

Her er SQL-forespørgslen til at hente poster fra sidste 24 timer i PostgreSQL. Lad os sige, at du har følgende tabel salg(ordre_dato, beløb) .

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 |
+---------------------+--------+

Bonus Læs:Sådan øges maks. forbindelser i PostgreSQL


Få rækker fra de seneste 24 timer i PostgreSQL

Her er SQL-forespørgslen til at hente poster fra sidste 24 timer i 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 |
+---------------------+--------+

I ovenstående SQL-forespørgsel bruger vi PostgreSQL-systemfunktionen now() for at få aktuel datotid. Derefter bruger vi INTERVAL-sætning til at vælge de rækker, hvor ordre_date falder inden for de seneste 24 timer efter nuværende datotid.

Bonus Læs:PostgreSQL Performance Tuning Tips

Du kan også angive tidsinterval i dage i stedet for timer.

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 |
+---------------------+--------+

Bonuslæsning:Top 5 PostgreSQL-forespørgselsovervågningsværktøjer

Brug følgende forespørgsel, hvis du kun vil vælge poster for den nuværende dag og ikke de sidste 24 timer.

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 |
+---------------------+--------+

I ovenstående forespørgsel vil du kun få rækker til nuværende dato og ikke efter 24 timer. Vi bruger funktionen DATE_TRUNCT til kun at vælge de rækker, hvor datoværdien for ordre_dato er den samme som datoværdien for systemvariablen CURRENT_DATE, det vil sige nuværende dato.

Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!

  1. Sådan vælger du Top N rækker pr. gruppe i MySQL

  2. Skift prioritet for en konto i en database-mailprofil (SSMS)

  3. Importer psycopg2 bibliotek ikke indlæst:libssl.1.0.0.dylib

  4. Forstå SQL Server LOCKS på SELECT-forespørgsler