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

Comment obtenir des enregistrements entre 2 dates dans MySQL

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 !