

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Funzione DATEADD
<a name="r_DATEADD_function"></a>

Incrementa un valore di DATE, TIME, TIMETZ o TIMESTAMP dell'intervallo specificato. 

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

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

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

 *datepart*   
La parte di data (ad esempio, anno, mese o giorno) su cui la funzione opera. Per ulteriori informazioni, consultare [Parti di data per funzioni di data e timestamp](r_Dateparts_for_datetime_functions.md). 

 *intervallo*   
Un intero che specifica l'intervallo (ad esempio, il numero di giorni) da aggiungere all'espressione target. Un intero negativo sottrae l'intervallo. 

 *date*\$1*time*\$1*timetz*\$1*timestamp*  
Una colonna o un'espressione DATE, TIME, TIMETZ, or TIMESTAMP che viene implicitamente convertita in un DATE, TIME, TIMETZ o TIMESTAMP. L'espressione DATE, TIME, TIMETZ o TIMESTAMP deve contenere la parte di data specificata. 

## Tipo restituito
<a name="r_DATEADD_function-return-type"></a>

TIMESTAMP o TIME o TIMETZ a seconda del tipo di dati di input.

## Esempi con una colonna DATE
<a name="r_DATEADD_function-examples"></a>

Nel seguente esempio vengono aggiunti 30 giorni a ogni data di novembre presente nella tabella 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'esempio seguente aggiunge 18 mesi a un valore di data letterale.

```
select dateadd(month,18,'2008-02-28');

date_add
---------------------
2009-08-28 00:00:00
(1 row)
```

Il nome di colonna predefinito per una funzione DATEADD è DATE\$1ADD. Il timestamp predefinito per un valore di data è `00:00:00`. 

Nell'esempio seguente vengono aggiunti 30 minuti a un valore di data che non specifica un timestamp.

```
select dateadd(m,30,'2008-02-28');

date_add
---------------------
2008-02-28 00:30:00
(1 row)
```

È possibile assegnare un nome completo o abbreviato alle parti di data. In questo caso, *m* sta per minuti, non mesi. 

## Esempi con una colonna TIME
<a name="r_DATEADD_function-examples-time"></a>

La tabella di esempio seguente TIME\$1TEST contiene una colonna TIME\$1VAL (tipo TIME) con tre valori inseriti. 

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

Nell'esempio seguente vengono aggiunti 5 minuti a ogni TIME\$1VAL della tabella TIME\$1TEST.

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

Nell'esempio seguente vengono aggiunte 8 ore a un valore di tempo letterale.

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

L'esempio seguente mostra quando un tempo va oltre 24:00:00 o è precedente a 00:00:00. 

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

## Esempi con una colonna TIMETZ
<a name="r_DATEADD_function-examples-timetz"></a>

I valori di output in questi esempi sono in UTC che è il fuso orario predefinito. 

La tabella di esempio seguente TIMETZ\$1TEST contiene una colonna TIMETZ\$1VAL (tipo TIMETZ) con tre valori inseriti.

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

Nell'esempio seguente vengono aggiunti 5 minuti a ogni TIMETZ\$1VAL nella tabella 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
```

Nell'esempio seguente vengono aggiunte 2 ore a un valore timetz letterale.

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

## Esempi con una colonna TIMESTAMP
<a name="r_DATEADD_function-examples-timestamp"></a>

I valori di output in questi esempi sono in UTC che è il fuso orario predefinito. 

La tabella di esempio seguente TIMESTAMP\$1TEST ha una colonna TIMESTAMP\$1VAL (tipo TIMESTAMP) con tre valori inseriti.

```
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'esempio seguente aggiunge solo 20 anni ai valori TIMESTAMP\$1VAL in TIMESTAMP\$1TEST prima del 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'esempio seguente aggiunge 5 secondi a un valore di timestamp letterale scritto senza un indicatore dei secondi.

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

## Note per l'utilizzo
<a name="r_DATEADD_usage_notes"></a>

 Le funzioni DATEADD(month, ...) e ADD\$1MONTHS gestiscono differentemente le date che cadono alla fine del mese.
+ ADD\$1MONTHS: se la data che stai aggiungendo è l'ultimo giorno del mese, il risultato è sempre l'ultimo giorno del mese risultante, indipendentemente dalla lunghezza del mese. Ad esempio, 30 aprile \$1 1 mese è il 31 maggio. 

  ```
  select add_months('2008-04-30',1);
  
  add_months
  ---------------------
  2008-05-31 00:00:00
  (1 row)
  ```
+ DATEADD: se vi sono meno giorni nella data che stai aggiungendo rispetto al mese del risultato, il risultato sarà il giorno corrispondente del mese risultante, non l'ultimo giorno di quel mese. Ad esempio, 30 aprile \$1 1 mese è il 30 maggio. 

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

La funzione DATEADD gestisce la data 29/02 dell'anno bisestile differentemente a seconda se si utilizza dateadd(month, 12,…) o 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
```