Dans MySQL, vous pouvez utiliser le DATE_SUB()
fonction pour soustraire un laps de temps spécifié à partir d'une date. Par exemple, vous pouvez l'utiliser pour soustraire 7 jours à une date donnée. Vous pouvez spécifier s'il faut soustraire des jours, des semaines, des mois, des trimestres, des années, etc. Vous pouvez également soustraire une valeur temporelle, telle que des secondes, des microsecondes, etc.
Cette fonction est similaire à DATE_ADD()
, sauf qu'il soustrait d'une date au lieu d'y ajouter.
Syntaxe
La syntaxe ressemble à ceci :
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 à 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 d'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 des heures et des minutes. Comme ça.
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 indique les valeurs unitaires valides et leur format attendu.
unit Valeur | expr attendu Format |
---|---|
MICROSECOND | MICROSECONDES |
DEUXIÈME | SECONDES |
MINUTE | MINUTES |
HEURE | HEURES |
JOUR | JOURS |
SEMAINE | SEMAINES |
MOIS | MOIS |
TRIMESTRE | QUARTS |
ANNÉE | ANNÉES |
SECOND_MICROSECOND | ‘SECONDS.MICROSECONDES’ |
MINUTE_MICROSECOND | ‘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’ |
DAY_SECOND | ‘JOURS HEURES:MINUTES:SECONDES’ |
DAY_MINUTE | 'JOURS HEURES :MINUTES' |
DAY_HOUR | 'JOURS HEURES' |
YEAR_MONTH | ‘ANNÉES-MOIS’ |
Vous pouvez également utiliser le SUBDATE()
fonction pour faire la même chose (c'est un synonyme de DATE_SUB()
fonction lors de l'utilisation de la même syntaxe).
De plus, la syntaxe de SUBDATE()
a une deuxième forme, qui est une méthode abrégée de soustraction d'un certain nombre de jours à partir d'une date. Pour plus d'informations, consultez SUBDATE() Exemples dans MySQL.