PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment sélectionner des enregistrements des dernières 24 heures à l'aide de PostgreSQL

Parfois, vous devrez peut-être obtenir des enregistrements des dernières 24 heures ou sélectionner des lignes des dernières 24 heures pour les rapports et l'analyse. Voici comment sélectionner les enregistrements des dernières 24 heures à l'aide de PostgreSQL.


Obtenir les enregistrements des dernières 24 heures dans PostgreSQL

Voici la requête SQL pour obtenir les enregistrements des dernières 24 heures dans PostgreSQL. Supposons que vous ayez le tableau suivant ventes(date_commande, montant) .

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

Lecture bonus :comment augmenter le nombre maximal de connexions dans PostgreSQL


Obtenir les lignes des dernières 24 heures dans PostgreSQL

Voici la requête SQL pour obtenir les enregistrements des dernières 24 heures dans 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 |
+---------------------+--------+

Dans la requête SQL ci-dessus, nous utilisons la fonction système PostgreSQL now() pour obtenir la date et l'heure actuelles. Ensuite, nous utilisons la clause INTERVAL pour sélectionner les lignes où order_date tombe dans les dernières 24 heures de la date et de l'heure actuelles.

Lecture bonus :Conseils de réglage des performances PostgreSQL

Vous pouvez également spécifier un intervalle de temps en jours, au lieu d'heures.

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

Lecture bonus :Top 5 des outils de surveillance des requêtes PostgreSQL

Si vous souhaitez sélectionner uniquement des enregistrements pour le jour présent, et non pour les dernières 24 heures, utilisez la requête suivante.

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

Dans la requête ci-dessus, vous obtiendrez des lignes uniquement à la date actuelle, et non au-delà de 24 heures. Nous utilisons la fonction DATE_TRUNCT pour sélectionner uniquement les lignes où la valeur de date de order_date est identique à la valeur de date de la variable système CURRENT_DATE, c'est-à-dire la date actuelle.

Ubiq permet de visualiser facilement les données en quelques minutes et de les surveiller dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !