Mysql
 sql >> Base de données >  >> RDS >> Mysql

SUBDATE() Exemples – MySQL

Dans MySQL, vous pouvez utiliser le SUBDATE() fonction pour soustraire un laps de temps spécifié à partir d'une date. Par exemple, vous pouvez l'utiliser pour soustraire 10 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.

Lors de l'utilisation de la première syntaxe répertoriée ci-dessous, le SUBDATE() la fonction est synonyme de DATE_SUB() fonction (similaire à la façon dont ADDDATE() est un synonyme de DATE_ADD() lors de l'utilisation de la même syntaxe).

Syntaxe

Vous pouvez utiliser cette fonction des deux manières suivantes :

SUBDATE(date,INTERVAL expr unit)

Ou

SUBDATE(expr,days)

Exemple 1 - La première syntaxe

Voici un exemple d'utilisation de la première forme de la syntaxe.

SELECT SUBDATE('2018-05-10', INTERVAL 2 DAY) AS Result;

Résultat :

+------------+
| Result     |
+------------+
| 2018-05-08 |
+------------+

Cet exemple soustrait 2 jours à la date fournie par le premier argument.

Exemple 2 - La deuxième syntaxe

Cet exemple pourrait être réécrit comme suit :

SELECT SUBDATE('2018-05-10', 2) AS Result;

Résultat :

+------------+
| Result     |
+------------+
| 2018-05-08 |
+------------+

Cela utilise la deuxième forme de la syntaxe. Le deuxième argument est un entier qui représente le nombre de jours à soustraire de la date fournie par le premier argument.

Comme mentionné, SUBDATE() est un synonyme de DATE_SUB() , mais uniquement lorsque la première syntaxe est utilisée. La deuxième syntaxe n'est disponible que dans SUBDATE() .

Exemple 3 – Autres unités de date

L'un des avantages de la première forme de la syntaxe est que vous pouvez spécifier s'il faut soustraire des jours, des semaines, des mois, des années, etc. Voici quelques exemples.

SELECT 
    '2018-05-10' AS 'Start Date',
    SUBDATE('2018-05-10', INTERVAL 2 WEEK) AS '-2 Weeks',
    SUBDATE('2018-05-10', INTERVAL 2 MONTH) AS '-2 Months',
    SUBDATE('2018-05-10', INTERVAL 2 QUARTER) AS '-2 Quarters',
    SUBDATE('2018-05-10', INTERVAL 2 YEAR) AS '-2 Years';

Résultat :

+------------+------------+------------+-------------+------------+
| Start Date | -2 Weeks   | -2 Months  | -2 Quarters | -2 Years   |
+------------+------------+------------+-------------+------------+
| 2018-05-10 | 2018-04-26 | 2018-03-10 | 2017-11-10  | 2016-05-10 |
+------------+------------+------------+-------------+------------+

Exemple 4 - Unités de temps

Vous pouvez également utiliser SUBDATE() pour soustraire des unités de temps d'une valeur date/heure. Voici un exemple.

SELECT SUBDATE('2018-05-10 01:00:00', INTERVAL 2 HOUR) AS Result;

Résultat :

+---------------------+
| Result              |
+---------------------+
| 2018-05-09 23:00: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’