sql >> Database >  >> RDS >> PostgreSQL

Hoe records van de afgelopen 24 uur te selecteren met PostgreSQL

Soms moet u records van de afgelopen 24 uur ophalen of rijen van de afgelopen 24 uur selecteren voor rapportage en analyse. Hier leest u hoe u records van de afgelopen 24 uur selecteert met PostgreSQL.


Verkrijg records van de afgelopen 24 uur in PostgreSQL

Hier is de SQL-query om records van de afgelopen 24 uur op te halen in PostgreSQL. Stel dat u de volgende tabel verkoop(order_date, hoeveelheid) . heeft .

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 lezen:hoe u het maximale aantal verbindingen in PostgreSQL kunt vergroten


Rijen van de afgelopen 24 uur ophalen in PostgreSQL

Hier is de SQL-query om records van de afgelopen 24 uur op te halen in 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 |
+---------------------+--------+

In de bovenstaande SQL-query gebruiken we de PostgreSQL-systeemfunctie now() om de huidige datetime te krijgen. Vervolgens gebruiken we de INTERVAL-clausule om die rijen te selecteren waar order_date valt binnen de afgelopen 24 uur na de huidige datetime.

Bonus Lezen:Tips voor het afstemmen van PostgreSQL-prestaties

U kunt het tijdsinterval ook specificeren in dagen, in plaats van uren.

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

Bonus Lezen:Top 5 PostgreSQL Query Monitoring Tools

Als u alleen records voor de huidige dag wilt selecteren en niet voor de afgelopen 24 uur, gebruikt u de volgende zoekopdracht.

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

In de bovenstaande zoekopdracht krijgt u alleen rijen met de huidige datum en niet na 24 uur. We gebruiken de DATE_TRUNCT-functie om alleen die rijen te selecteren waar de datumwaarde van order_date hetzelfde is als de datumwaarde van de CURRENT_DATE systeemvariabele, dat wil zeggen de huidige datum.

Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te monitoren. Probeer het vandaag nog!

  1. PRAGMA table_list in SQLite

  2. SQL*Plus hoe de tekstvariabele van de prompt te accepteren?

  3. Tabelgegevens exporteren van de ene SQL Server naar de andere

  4. MySQL-fout omzeilen Deadlock gevonden bij het proberen te vergrendelen; probeer de transactie opnieuw te starten