A volte potrebbe essere necessario ottenere i record delle ultime 24 ore o selezionare le righe delle ultime 24 ore per i rapporti e l'analisi. Ecco come selezionare i record delle ultime 24 ore utilizzando PostgreSQL.
Ottieni i record delle ultime 24 ore in PostgreSQL
Ecco la query SQL per ottenere i record delle ultime 24 ore in PostgreSQL. Supponiamo che tu abbia la seguente tabella vendite(data_ordine, importo) .
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 Leggi:Come aumentare le connessioni massime in PostgreSQL
Ottieni le righe delle ultime 24 ore in PostgreSQL
Ecco la query SQL per ottenere i record delle ultime 24 ore 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 |
+---------------------+--------+ Nella query SQL sopra, utilizziamo la funzione di sistema PostgreSQL now() per ottenere la data e l'ora corrente. Quindi utilizziamo la clausola INTERVAL per selezionare le righe in cui data_ordine rientra nelle ultime 24 ore dalla data e ora attuale.
Bonus Leggi:Suggerimenti per l'ottimizzazione delle prestazioni di PostgreSQL
Puoi anche specificare l'intervallo di tempo in giorni, anziché in ore.
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 Lettura:i 5 migliori strumenti di monitoraggio delle query PostgreSQL
Se desideri selezionare i record solo per il giorno attuale e non per le ultime 24 ore, utilizza la query seguente.
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 |
+---------------------+--------+
Nella query precedente, otterrai righe solo con la data presente e non trascorse 24 ore. Utilizziamo la funzione DATE_TRUNCT per selezionare solo quelle righe in cui il valore della data di order_date è uguale al valore della data della variabile di sistema CURRENT_DATE, ovvero la data attuale.
Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!