En MySQL, vous pouvez utiliser la fonction DATE_SUB()
pour soustraire une quantité de temps spécifiée d’une date. Par exemple, vous pouvez l’utiliser pour soustraire 7 jours d’une date donnée. Vous pouvez spécifier si vous souhaitez soustraire des jours, des semaines, des mois, des trimestres, des années, etc. Vous pouvez également soustraire une valeur de temps, comme les secondes, les microsecondes, etc.
Cette fonction est similaire à DATE_ADD()
, sauf qu’elle soustrait d’une date au lieu de l’ajouter.
Syntaxe
La syntaxe se présente comme suit :
DATE_SUB(date,INTERVAL expr unit)
Exemple 1 – Utilisation de base
Voici un exemple d’utilisation.
SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;
Résultat:
+------------+| Result |+------------+| 2021-05-02 |+------------+
Cet exemple soustrait 5 jours de la date fournie par le premier argument.
Exemple 2 – Autres unités de date
Vous pouvez spécifier les unités en jours, semaines, mois, années, etc. Voici quelques exemples.
SELECT '2021-05-07' AS 'Start Date', DATE_SUB('2021-05-07', INTERVAL 2 WEEK) AS '-2 Weeks', DATE_SUB('2021-05-07', INTERVAL 2 MONTH) AS '-2 Months', DATE_SUB('2021-05-07', INTERVAL 2 QUARTER) AS '-2 Quarters', DATE_SUB('2021-05-07', INTERVAL 2 YEAR) AS '-2 Years';
Résultat:
+------------+------------+------------+-------------+------------+| Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years |+------------+------------+------------+-------------+------------+| 2021-05-07 | 2021-04-23 | 2021-03-07 | 2020-11-07 | 2019-05-07 |+------------+------------+------------+-------------+------------+
Exemple 3 – Unités de temps
Vous pouvez également soustraire des unités de temps à une valeur de date/heure. Voici un exemple.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;
Résultat:
+---------------------+| Result |+---------------------+| 2021-05-07 05:00:00 |+---------------------+
Et vous pouvez spécifier plusieurs unités en même temps. Par exemple, vous pouvez spécifier les heures et les minutes. Comme ceci.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;
Résultat:
+---------------------+| Result |+---------------------+| 2021-05-07 08:30:00 |+---------------------+
Valeurs attendues
Le tableau suivant montre les valeurs d’unités valides et leur format attendu.
unit Valeur |
Valeur attendue expr Format |
---|---|
MICROSECONDE | MICROSECONDE |
SECONDE | SECONDES |
MINUTE | MINUTES |
HEURE | HEURES |
JOUR | JOURS |
SEMAINE | SEMAINES |
MOIS | MOYENS |
QUARTIER | QUARTIERS |
ANNÉE | ANNÉES |
SECONDE_MICROSECONDE | ‘SECONDES.MICROSECONDES’ |
MINUTE_MICROSECONDE | ‘MINUTES:SECONDES.MICROSECONDES’ |
MINUTE_SECOND | ‘MINUTES:SECONDES’ |
HOUR_MICROSECOND | ‘HEURES:MINUTES:SECONDES.MICROSECONDES’ |
HOUR_SECOND | ‘HEURES:MINUTES:SECONDES’ |
HOUR_MINUTE | ‘HEURES:MINUTES’ |
DAY_MICROSECOND | ‘JOURS HEURES:MINUTES:SECONDES.MICROSECONDES’ |
JOUR_SECOND | ‘JOURS HEURES:MINUTES:SECONDES’ |
JOUR_MINUTE | ‘JOURS HEURES :MINUTES’ |
DAY_HOUR | ‘DAYS HOURS’ |
YEAR_MONTH | ‘YEARS-MONTHS’ |
Vous pouvez également utiliser la fonction SUBDATE()
pour faire la même chose (c’est un synonyme de la fonction DATE_SUB()
lorsqu’on utilise la même syntaxe).
En outre, la syntaxe de SUBDATE()
a une deuxième forme, qui est une méthode raccourcie pour soustraire un certain nombre de jours d’une date. Pour plus d’informations, voir Exemples de SUBDATE() dans MySQL.