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!