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

Comment ADDDATE() fonctionne dans MariaDB

Dans MariaDB, ADDDATE() est une fonction de date et d'heure intégrée qui effectue l'arithmétique de la date.

Il permet de modifier une date en précisant la date, l'unité à ajouter et le montant à ajouter. Vous pouvez passer un montant négatif si vous devez soustraire la date d'un certain intervalle.

ADDDATE() a également une syntaxe de raccourci qui vous permet d'ajouter un nombre donné de jours à la date.

Syntaxe

Le ADDDATE() la fonction a deux syntaxes.

Syntaxe 1 :

ADDDATE(expr,days) 

expr est la date, et days est le nombre de jours à ajouter.

Syntaxe 2 :

ADDDATE(date,INTERVAL expr unit) 

date est la date à modifier, expr est le montant à ajouter, et unit est l'unité à ajouter (par exemple seconde, minute, etc.).

Lors de l'utilisation de cette syntaxe, ADDDATE() est un synonyme de DATE_ADD() .

Exemple - Syntaxe 1

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

SELECT ADDDATE('2021-05-01', 1); 

Résultat :

+-----------------------------------+| ADDATE('2021-05-01', 1) |+--------------------------+| 2021-05-02 |+--------------------------+

Nous pouvons également inclure la partie horaire si nécessaire :

SELECT ADDDATE('2021-05-01 10:00:00', 1); 

Résultat :

+-----------------------------------+| ADDATE('2021-05-01 10:00:00', 1) |+------------------------------- ----+| 2021-05-02 10:00:00 |+-----------------------------------+ 

Voici deux manières alternatives de faire la même chose :

SELECT 
    DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1",
    '2021-05-01 10:00:00' + INTERVAL 1 DAY AS "Result 2"; 

Résultat :

+---------------------+---------------------+| Résultat 1 | Résultat 2 |+---------------------+---------------------+| 2021-05-02 10:00:00 | 2021-05-02 10:00:00 |+---------------------+---------------- -----+

Exemple - Syntaxe 2

Voici un exemple d'utilisation de la deuxième syntaxe :

SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR); 

Résultat :

+------------------------------------------------------------ ---+| ADDATE('2021-05-31 10:00:00', INTERVALLE 1 HEURE) |+------------------------ --------------------+| 2021-05-31 11:00:00 |+-------------------------------------------------- -----------+

Cette syntaxe nous permet d'ajouter d'autres unités à la date (c'est-à-dire pas seulement les jours). Ici, j'ai ajouté une heure à la date, mais j'aurais tout aussi bien pu ajouter des minutes, des secondes, des mois, des jours, des années, etc. Continuez à lire pour des exemples.

Voici deux méthodes alternatives pour obtenir le même résultat que dans l'exemple ci-dessus :

SELECT 
    DATE_ADD('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1",
    '2021-05-31 10:00:00' + INTERVAL 1 HOUR AS "Result 2"; 

Résultat :

+---------------------+---------------------+| Résultat 1 | Résultat 2 |+---------------------+---------------------+| 2021-05-31 11:00:00 | 2021-05-31 11:00:00 |+---------------------+---------------- -----+

Intervalles négatifs

Fournir un intervalle négatif soustrait ce montant de la date.

Exemple :

SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR); 

Résultat :

+------------------------------------------------------------ ----+| ADDATE('2021-05-31 10:00:00', INTERVALLE -1 HEURE) |+------------------------ ----------------------+| 2021-05-31 09:00:00 |+-------------------------------------------------- ------------+

Autres unités

Voici un exemple qui ajoute un intervalle de 1 aux différentes unités de date et d'heure :

SELECT 
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND; 

Résultat (en utilisant la sortie verticale) :

 ANNEE :01-05-2022 10:00:00 MOIS :01-06-2021 10:00:00 JOUR :02-05-2021 10:00:00 HEURE :01-05-2021 11:00 :00 MINUTE :2021-05-01 10:01:00 SECONDE :2021-05-01 10:00:01MICROSECOND :2021-05-01 10:00:00.000001

Unités composites

Voici un exemple qui utilise des unités composées :

SELECT 
    ADDDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
    ADDDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
    ADDDATE('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE"; 

Résultat :

+---------------------+---------------------+-- -------------------+| ANNEE_MOIS | HOUR_SECOND | JOUR_MINUTE |+---------------------+---------------------+--- ------------------+| 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 |+---------------------+---------------- -----+---------------------+

Dates nulles

Passer null pour la date renvoie null :

SELECT ADDDATE(null, INTERVAL 1 YEAR); 

Résultat :

+---------------------------------------------+| ADDATE(null, INTERVALLE 1 AN) |+--------------------------------+| NULL |+--------------------------------+

Argument manquant

Appel de ADDDATE() avec le mauvais nombre d'arguments, ou sans passage d'arguments, une erreur se produit :

SELECT ADDDATE(); 

Résultat :

ERROR 1064 (42000) :vous avez une erreur dans votre syntaxe SQL ; consultez le manuel qui correspond à la version de votre serveur MariaDB pour la bonne syntaxe à utiliser près de ')' à la ligne 1