Fonction DATEADD - AWS Clean Rooms

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fonction DATEADD

Augmente une valeur DATE, TIME, TIMETZ ou TIMESTAMP d’un intervalle spécifié.

Syntaxe

DATEADD( datepart, interval, {date|time|timetz|timestamp} )

Arguments

datepart

Partie de la date (par exemple, année, mois, jour ou heure) sur laquelle la fonction opère. Pour plus d'informations, consultez Parties de date pour les fonctions de date ou d'horodatage.

interval

Nombre entier qui a spécifié l’intervalle (nombre de jours, par exemple) à ajouter à l’expression cible. Un nombre entier négatif soustrait l’intervalle.

date|time|timetz|timestamp

Colonne DATE, TIME, TIMETZ ou TIMESTAMP, ou expression qui convertit implicitement en un horodatage ou valeur DATE, TIME, TIMETZ ou TIMESTAMP. L’expression DATE, TIME, TIMETZ ou TIMESTAMP doit contenir la partie de date spécifiée.

Type de retour

TIMESTAMP ou TIME ou TIMETZ selon le type de données d’entrée.

Exemples avec une colonne DATE

Dans l’exemple suivant, 30 jours sont ajoutés à chaque date en novembre qui existe dans la table DATE.

select dateadd(day,30,caldate) as novplus30 from date where month='NOV' order by dateid; novplus30 --------------------- 2008-12-01 00:00:00 2008-12-02 00:00:00 2008-12-03 00:00:00 ... (30 rows)

L’exemple suivant ajoute 18 mois à une valeur de date littérale.

select dateadd(month,18,'2008-02-28'); date_add --------------------- 2009-08-28 00:00:00 (1 row)

Le nom de colonne par défaut pour une fonction DATEADD est DATE_ADD. L’horodatage par défaut pour une valeur de date est 00:00:00.

L’exemple suivant ajoute 30 minutes à une valeur de date qui ne spécifie pas d’horodatage.

select dateadd(m,30,'2008-02-28'); date_add --------------------- 2008-02-28 00:30:00 (1 row)

Vous pouvez nommer les parties de date intégralement ou les abréger. Dans ce cas, m représente les minutes, et non les mois.

Exemples avec une colonne TIME

L'exemple de table TIME_TEST suivant comporte une colonne TIME_VAL (type TIME) avec trois valeurs insérées.

select time_val from time_test; time_val --------------------- 20:00:00 00:00:00.5550 00:58:00

L’exemple suivant ajoute 5 minutes à chaque TIME_VAL de la table TIME_TEST.

select dateadd(minute,5,time_val) as minplus5 from time_test; minplus5 --------------- 20:05:00 00:05:00.5550 01:03:00

L’exemple suivant ajoute 8 heures à une valeur de temps littérale.

select dateadd(hour, 8, time '13:24:55'); date_add --------------- 21:24:55

L’exemple suivant montre quand une heure est supérieure à 24:00:00 ou inférieure à 00:00:00.

select dateadd(hour, 12, time '13:24:55'); date_add --------------- 01:24:55

Exemples avec une colonne TIMETZ

Les valeurs de sortie de ces exemples utilisent le fuseau horaire par défaut UTC.

L'exemple de table TIMETZ_TEST suivant comporte une colonne TIMETZ_VAL (type TIMETZ) avec trois valeurs insérées.

select timetz_val from timetz_test; timetz_val ------------------ 04:00:00+00 00:00:00.5550+00 05:58:00+00

L’exemple suivant ajoute 5 minutes à chaque TIMETZ_VAL de la table TIMETZ_TEST.

select dateadd(minute,5,timetz_val) as minplus5_tz from timetz_test; minplus5_tz --------------- 04:05:00+00 00:05:00.5550+00 06:03:00+00

L’exemple suivant ajoute 2 heures à une valeur timetz littérale.

select dateadd(hour, 2, timetz '13:24:55 PST'); date_add --------------- 23:24:55+00

Exemples avec une colonne TIMESTAMP

Les valeurs de sortie de ces exemples utilisent le fuseau horaire par défaut UTC.

L’exemple de table TIMESTAMP_TEST suivant comporte une colonne TIMESTAMP_VAL (type TIMESTAMP) avec trois valeurs insérées.

SELECT timestamp_val FROM timestamp_test; timestamp_val ------------------ 1988-05-15 10:23:31 2021-03-18 17:20:41 2023-06-02 18:11:12

L’exemple suivant ajoute 20 ans uniquement aux valeurs TIMESTAMP_VAL de TIMESTAMP_TEST antérieures à l’an 2000.

SELECT dateadd(year,20,timestamp_val) FROM timestamp_test WHERE timestamp_val < to_timestamp('2000-01-01 00:00:00', 'YYYY-MM-DD HH:MI:SS'); date_add --------------- 2008-05-15 10:23:31

L’exemple suivant ajoute 5 secondes à une valeur d’horodatage littérale écrite sans indicateur de secondes.

SELECT dateadd(second, 5, timestamp '2001-06-06'); date_add --------------- 2001-06-06 00:00:05

Notes d’utilisation

Les fonctions DATEADD(month, ...) et ADD_MONTHS gèrent les dates tombant différemment en fin de mois :

  • ADD_MONTHS : Si la date que vous ajoutez est le dernier jour du mois, le résultat est toujours le dernier jour du mois du résultat, quelle que soit la longueur du mois. Par exemple, 30 avril + 1 mois est le 31 mai :

    select add_months('2008-04-30',1); add_months --------------------- 2008-05-31 00:00:00 (1 row)
  • DATEADD : S’il y a moins de jours dans la date que vous ajoutez que dans le mois du résultat, le résultat sera le jour correspondant du mois du résultat, pas le dernier jour du mois. Par exemple, 30 avril + 1 mois est le 30 mai :

    select dateadd(month,1,'2008-04-30'); date_add --------------------- 2008-05-30 00:00:00 (1 row)

La fonction DATEADD gère la date de l’année bissextile du 29/02 différemment selon que vous utilisez dateadd(month, 12,...) ou dateadd(year, 1,...).

select dateadd(month,12,'2016-02-29'); date_add --------------------- 2017-02-28 00:00:00 select dateadd(year, 1, '2016-02-29'); date_add --------------------- 2017-03-01 00:00:00