

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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
<a name="r_DATEADD_function"></a>

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

## Syntaxe
<a name="r_DATEADD_function-synopsis"></a>

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

## Arguments
<a name="r_DATEADD_function-arguments"></a>

 *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](r_Dateparts_for_datetime_functions.md). 

 *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*\$1*time*\$1*timetz*\$1*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
<a name="r_DATEADD_function-return-type"></a>

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

## Exemples avec une colonne DATE
<a name="r_DATEADD_function-examples"></a>

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\$1ADD. 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
<a name="r_DATEADD_function-examples-time"></a>

L'exemple de table TIME\$1TEST suivant comporte une colonne TIME\$1VAL (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\$1VAL de la table TIME\$1TEST.

```
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
<a name="r_DATEADD_function-examples-timetz"></a>

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

L'exemple de table TIMETZ\$1TEST suivant comporte une colonne TIMETZ\$1VAL (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\$1VAL de la table TIMETZ\$1TEST.

```
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
<a name="r_DATEADD_function-examples-timestamp"></a>

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

L’exemple de table TIMESTAMP\$1TEST suivant comporte une colonne TIMESTAMP\$1VAL (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\$1VAL de TIMESTAMP\$1TEST 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
<a name="r_DATEADD_usage_notes"></a>

 Les fonctions DATEADD(month, ...) et ADD\$1MONTHS gèrent les dates tombant différemment en fin de mois :
+ ADD\$1MONTHS : 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 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 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
```