Database.Guide

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.