Comparer deux dates dans MySQL

Sweety Rupani 30 janvier 2023
  1. Création d’un tableau et insertion de valeurs
  2. Comparer deux dates à l’aide de la clause WHERE
  3. Comparer deux dates à l’aide de l’opérateur BETWEEN
  4. Comparer deux dates à l’aide de la fonction DATE_ADD
Comparer deux dates dans MySQL

Cet article explique la comparaison de deux dates dans MySQL. Il existe trois approches différentes pour accomplir cette tâche.

  1. Utilisation de la clause WHERE
  2. Utilisation de l’opérateur BETWEEN
  3. Utilisation de la fonction DATE_ADD

Création d’un tableau et insertion de valeurs

Tout d’abord, je vais créer une table pour les employés comme

Create table employee (empid int primary key, fname varchar(10), lname varchar(20), logindate timestamp not null default CURRENT_TIMESTAMP); 

Maintenant, je vais insérer quelques valeurs dans le tableau pour démonstration.

INSERT INTO employee('empid', 'fname', 'lname')VALUES (1,'aaa','bbb'); 

INSERT INTO employee VALUES 
(201,'Peter','Parker','2001-01-01 16:15:00'), 
(202,'Thor','Odinson','2021-08-02 12:15:00'), 
(204,'Loki','Laufeyson','2009-08-03 10:43:24'); 

Comparer deux dates à l’aide de la clause WHERE

La requête ci-dessous est une approche très simple utilisant la requête SELECT qui extrait tous les enregistrements entre la plage de dates donnée.

SELECT * FROM employee WHERE logindate >= '2000-07-05' AND logindate < '2011-11-10'; 

comparer deux dates dans mysql - en utilisant la clause where

Comparer deux dates à l’aide de l’opérateur BETWEEN

Premièrement, nous devons convertir la date en chaîne dans MySQL. Pour accomplir cette tâche, nous utiliserons la fonction DATE pour extraire la date d’un Datetime.

La syntaxe de la fonction DATE est ci-dessous.

DATE(column name)

Si vous souhaitez profiter d’un index sur la colonne logindate, vous pouvez essayer ceci à la place. L’opérateur Entre peut également être utilisé pour sélectionner tous les enregistrements qui ont la colonne de date entre deux expressions de date spécifiées.

SELECT * FROM employee WHERE DATE(logindate) BETWEEN '2000-07-05' AND '2011-11-10'; 

comparer deux dates dans mysql - en utilisant entre

MySQL n’autorise qu’un seul format de date yyyy-mm-dd, donc chaque fois que vous aurez besoin de formater une expression de date de chaîne, vous devrez utiliser ce format.

Maintenant, vous pouvez avoir une question sur la nécessité de la fonction DATE() en comparaison ?

Ainsi, la fonction MySQL DATE() extrait la partie date de votre colonne DATETIME ou TIMESTAMP dans une chaîne comme indiqué ci-dessous :

mysql> SELECT DATE('2005-08-28 01:02:03'); -> '2005-08-28' 

La fonction DATE() est utilisée pour que MySQL ne considère que la partie date de vos valeurs de colonne pour la comparaison. Lorsque vous n’utilisez pas la fonction DATE(), MySQL comparera la partie horaire de votre colonne avec votre expression de chaîne. En utilisant cette option, toute comparaison inclura l’expression de chaîne spécifiée dans le jeu de résultats

Lors de la comparaison d’une colonne DATETIME ou TIME-STAMP avec une chaîne représentant une date comme dans la requête ci-dessus, MySQL transformera les valeurs de colonne et d’expression en types entiers longs à des fins de comparaison.

C’est la raison pour laquelle même si vous comparez une colonne de date avec une chaîne, vous n’avez pas besoin de convertir manuellement les valeurs de votre colonne de date en une chaîne.

Comparer deux dates à l’aide de la fonction DATE_ADD

Une autre approche consiste à utiliser la fonction DATE_ADD(). Cependant, cette approche n’a pas nécessairement besoin de la fonction DATE_ADD(). Mais si vous souhaitez considérer que quelques minutes après la date souhaitée font partie de la solution, vous pouvez l’utiliser. Par exemple, si je veux tous les enregistrements entre la plage de dates donnée, mais que je peux considérer les enregistrements qui ont été insérés 15 minutes après la limite spécifiée. Cette fonction est très utile.

La fonction DATE_ADD() est utilisée pour ajouter un intervalle d’heure ou de date spécifié à une date donnée, puis renvoyer la date. La fonction DATE_ADD prend deux paramètres, le premier paramètre est la date et le second est l’intervalle à ajouter

select * from employee 
where logindate between '2000-07-05' and DATE_ADD('2011-07-10',INTERVAL 15 MINUTE); 

comparer deux dates dans mysql - en utilisant date add