Dans MySQL, vous pouvez utiliser le DATEDIFF()
fonction pour trouver la différence entre deux dates. La façon dont cela fonctionne est que vous fournissez deux arguments (un pour chaque date) et DATEDIFF()
renverra le nombre de jours entre les deux dates.
Exemples ci-dessous.
Syntaxe
Tout d'abord, voici la syntaxe :
DATEDIFF(expr1,expr2)
Où expr1
est la première date, et expr2
est le deuxième rendez-vous.
Exemple 1 - Utilisation de base
Voici un exemple pour illustrer.
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
Résultat :
+--------+ | Result | +--------+ | 29 | +--------+
Dans cet exemple, la première date est postérieure à la deuxième date. Dans ce cas, nous obtenons une valeur de retour positive.
Exemple 2 - Comparaison avec une date antérieure
La première date ne doit pas nécessairement être postérieure à la deuxième date. Vous pouvez utiliser une date antérieure pour le premier argument et il renverra une valeur négative. Si nous échangeons ces deux arguments, nous obtenons ce qui suit :
SELECT DATEDIFF('2020-10-01', '2020-10-30') AS 'Result';
Résultat :
+--------+ | Result | +--------+ | -29 | +--------+
Exemple 3 - Valeurs DateHeure
Lorsqu'il est utilisé avec datetime valeurs, seule la partie date est utilisée pour comparer les dates. Exemple :
SELECT DATEDIFF('2020-10-30 23:59:59', '2020-10-01') AS 'Result 1', DATEDIFF('2020-10-01 23:59:59', '2020-10-30') AS 'Result 2';
Résultat :
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | 29 | -29 | +----------+----------+
Exemple 4 - Requête de base de données
Voici un exemple d'utilisation de DATEDIFF()
dans une requête de base de données. Dans cet exemple, je compare le payment_date
colonne avec la date d'aujourd'hui (en utilisant le CURDATE()
fonction pour renvoyer la date d'aujourd'hui):
USE sakila; SELECT DATE(payment_date) AS 'Date/Time', CURDATE(), DATEDIFF(payment_date, CURDATE()) AS 'Date' FROM payment WHERE payment_id = 1;
Résultat :
+------------+------------+-------+ | Date/Time | CURDATE() | Date | +------------+------------+-------+ | 2005-05-25 | 2018-06-25 | -4779 | +------------+------------+-------+