Dans MariaDB, TIMESTAMPADD()
est une fonction de date et d'heure intégrée qui ajoute un intervalle d'expression entière à une expression de date ou de date/heure donnée.
Syntaxe
La syntaxe ressemble à ceci :
TIMESTAMPADD(unit,interval,datetime_expr)
Où unit
est l'une des valeurs suivantes :
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
Les unités peuvent éventuellement avoir un préfixe de SQL_TSI_
.
Exemple
Voici un exemple pour illustrer :
SELECT TIMESTAMPADD(DAY, 10, '2030-02-01');
Résultat :
+-------------------------------------+ | TIMESTAMPADD(DAY, 10, '2030-02-01') | +-------------------------------------+ | 2030-02-11 | +-------------------------------------+
Valeurs DateHeure
Voici un exemple de transmission d'une valeur datetime :
SELECT TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45');
Résultat :
+-----------------------------------------------+ | TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45') | +-----------------------------------------------+ | 2030-02-01 20:30:45 | +-----------------------------------------------+
Ajout d'un SQL_TSI_
Préfixe
L'unité peut inclure un SQL_TSI_
préfixe si nécessaire :
SELECT TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01');
Résultat :
+----------------------------------------------+ | TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01') | +----------------------------------------------+ | 2040-02-01 | +----------------------------------------------+
Microsecondes
Voici un exemple qui ajoute des microsecondes :
SELECT TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45');
Résultat :
+----------------------------------------------------------+ | TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45') | +----------------------------------------------------------+ | 2030-02-01 10:30:45.123456 | +----------------------------------------------------------+
Intervalles négatifs
Les intervalles négatifs sont valides :
Exemple :
SELECT TIMESTAMPADD(YEAR, -10, '2030-02-01');
Résultat :
+---------------------------------------+ | TIMESTAMPADD(YEAR, -10, '2030-02-01') | +---------------------------------------+ | 2020-02-01 | +---------------------------------------+
Date actuelle
Nous pouvons passer NOW()
comme argument datetime pour utiliser la date et l'heure actuelles :
SELECT
NOW(),
TIMESTAMPADD(DAY, 10, NOW());
Résultat :
+---------------------+------------------------------+ | NOW() | TIMESTAMPADD(DAY, 10, NOW()) | +---------------------+------------------------------+ | 2021-05-28 09:58:56 | 2021-06-07 09:58:56 | +---------------------+------------------------------+
Argument manquant
Appel de TIMESTAMPADD()
avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :
SELECT TIMESTAMPADD();
Résultat :
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
Et un autre exemple :
SELECT TIMESTAMPADD(10, '2020-12-09');
Résultat :
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '10, '2020-12-09')' at line 1