Souvent, vous devez obtenir des données entre 2 dates pour les rapports et l'analyse. Il est assez facile d'obtenir des enregistrements entre 2 dates dans MySQL même s'il n'y a pas de fonction intégrée pour cela. Voici le SQL pour sélectionner des enregistrements entre 2 dates dans MySQL, PostgreSQL et SQL Server.
Comment obtenir des enregistrements entre 2 dates dans MySQL
Voici le SQL pour obtenir des enregistrements entre 2 dates dans MySQL.
Disons que vous avez le tableau suivant sales(order_date, sale)
mysql> create table sales(order_date date,sale int);
mysql> insert into sales(order_date,sale)
values('2020-06-01',250),
('2020-06-0',350),
('2020-06-02',400),
('2020-06-03',250),
('2020-06-04',200),
('2020-06-05',180),
('2020-06-06',150),
('2020-06-07',650),
('2020-06-08',500),
('2020-06-09',150);
mysql> select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-06-01 | 250 |
| 2020-06-00 | 350 |
| 2020-06-02 | 400 |
| 2020-06-03 | 250 |
| 2020-06-04 | 200 |
| 2020-06-05 | 180 |
| 2020-06-06 | 150 |
| 2020-06-07 | 650 |
| 2020-06-08 | 500 |
| 2020-06-09 | 150 |
+------------+------+
Lecture bonus :comment obtenir les enregistrements des dernières 24 heures
Comment obtenir des lignes entre 2 dates dans MySQL
Voici la requête SQL pour obtenir des enregistrements entre 2 dates dans MySQL. Il existe 2 façons d'obtenir des lignes entre 2 dates - en utilisant l'opérateur mathématique et en utilisant la fonction BETWEEN. Nous allons examiner ces deux méthodes.
Lecture bonus : Comment obtenir les enregistrements des 15 derniers jours dans MySQL
Utiliser des opérateurs mathématiques
Supposons que vous souhaitiez obtenir des enregistrements où order_date est entre 2 dates 2020-06-02 et 2020-06-06. Voici le SQL pour obtenir des données entre 2 dates en utilisant des opérateurs mathématiques.
mysql> select * from sales
where order_date>='2020-06-02'
and order_date<='2020-06-06';
+------------+------+
| order_date | sale |
+------------+------+
| 2020-06-02 | 400 |
| 2020-06-03 | 250 |
| 2020-06-04 | 200 |
| 2020-06-05 | 180 |
| 2020-06-06 | 150 |
+------------+------+
Dans la requête ci-dessus, nous sélectionnons les enregistrements où order_date est le 2020-06-02 ou après et le 2020-06-06 ou avant. Vous pouvez également utiliser d'autres opérateurs mathématiques tels que>,<,=et <> avec des dates. Vous pouvez également cette requête SQL pour sélectionner des enregistrements entre 2 dates dans PostgreSQL, SQL Server et Oracle.
Lecture bonus :comment obtenir le premier enregistrement de chaque groupe dans MySQL
Si vous souhaitez sélectionner des enregistrements à partir d'une date spécifique jusqu'à la date actuelle, vous pouvez utiliser des fonctions système telles que current_date ou maintenant() dans votre requête.
mysql> select * from sales
where order_date>'2020-06-02'
and order_date<current_date;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-06-03 | 250 |
| 2020-06-04 | 200 |
| 2020-06-05 | 180 |
| 2020-06-06 | 150 |
| 2020-06-07 | 650 |
| 2020-06-08 | 500 |
+------------+------+
Utilisation de l'opérateur BETWEEN
Vous pouvez également sélectionner des données entre 2 dates en utilisant l'opérateur BETWEEN
mysql> select * from sales
where order_date
BETWEEN '2020-06-02' and '2020-06-06';
+------------+------+
| order_date | sale |
+------------+------+
| 2020-06-02 | 400 |
| 2020-06-03 | 250 |
| 2020-06-04 | 200 |
| 2020-06-05 | 180 |
| 2020-06-06 | 150 |
+------------+------+
Lors de la sélection des enregistrements, l'opérateur BETWEEN inclura les enregistrements entre les 2 dates que vous mentionnez, ainsi que les enregistrements aux 2 dates.
Ubiq facilite la visualisation des données en quelques minutes et la surveillance dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !