

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Função DATEADD
<a name="r_DATEADD_function"></a>

Incrementa um valor DATE, TIME, TIMETZ ou TIMESTAMP com um intervalo especificado. 

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

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

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

 *datepart*   
A parte da data (ano, mês, dia ou hora, por exemplo) sobre a qual a função atua. Para obter mais informações, consulte [Partes da data para funções de data ou de timestamp](r_Dateparts_for_datetime_functions.md). 

 *intervalo*   
Um número inteiro que especificou o intervalo (número de dias, por exemplo) a adicionar à expressão de destino. Um número inteiro negativo subtrai o intervalo. 

 *date*\$1*time*\$1*timetz*\$1*timestamp*  
Uma coluna DATE, TIME, TIMETZ ou TIMESTAMP ou uma expressão que converta implicitamente para DATE, TIME, TIMETZ ou TIMESTAMP A expressão DATE, TIME, TIMETZ ou TIMESTAMP deve conter a parte de data especificada. 

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

TIMESTAMP, TIME ou TIMETZ, dependendo do tipo de dados de entrada.

## Exemplos com uma coluna DATE
<a name="r_DATEADD_function-examples"></a>

O exemplo a seguir adiciona 30 dias a cada data em novembro que existe na tabela 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)
```

 O exemplo a seguir adiciona 18 meses a um valor de data literal.

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

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

O nome padrão da coluna para uma função DATEADD é DATE\$1ADD. O timestamp padrão para um valor de data é `00:00:00`. 

O exemplo a seguir adiciona 30 minutos a um valor de data que não especifica um timestamp.

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

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

Você pode nomear as partes da data por completo ou abreviá-las. Neste caso, *m* significa minutos, não meses. 

## Exemplos com uma coluna TIME
<a name="r_DATEADD_function-examples-time"></a>

O TIME\$1TEST da tabela a seguir tem uma coluna TIME\$1VAL (tipo TIME) com três valores inseridos. 

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

O exemplo a seguir adiciona 5 minutos a cada TIME\$1VAL na tabela TIME\$1TEST.

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

O exemplo a seguir adiciona 8 horas a um valor de tempo literal.

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

O exemplo a seguir mostra quando um tempo passa por 24:00:00 ou abaixo de 00:00:00. 

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

## Exemplos com uma coluna TIMETZ
<a name="r_DATEADD_function-examples-timetz"></a>

Os valores de saída nestes exemplos estão em UTC, que é o fuso horário padrão. 

O TIMETZ\$1TEST da tabela de exemplo a seguir tem uma coluna TIMETZ\$1VAL (tipo TIMETZ) com três valores inseridos.

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

O exemplo a seguir adiciona 5 minutos a cada TIMETZ\$1VAL na tabela 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
```

O exemplo a seguir adiciona 2 horas a um valor timetz literal.

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

## Exemplos com uma coluna TIMESTAMP
<a name="r_DATEADD_function-examples-timestamp"></a>

Os valores de saída nestes exemplos estão em UTC, que é o fuso horário padrão. 

O exemplo de tabela TIMESTAMP\$1TEST a seguir tem uma coluna TIMESTAMP\$1VAL (tipo TIMESTAMP) com três valores inseridos.

```
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
```

O exemplo a seguir adiciona 20 anos somente aos valores de TIMESTAMP\$1VAL em TIMESTAMP\$1TEST anteriores ao ano 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
```

O exemplo a seguir adiciona 5 segundos a um valor literal de carimbo de data/hora gravado sem um indicador de segundos.

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

## Observações de uso
<a name="r_DATEADD_usage_notes"></a>

 As funções DATEADD(month, …) e ADD\$1MONTHS lidam com datas que caiam no final do mês de forma diferente.
+ ADD\$1MONTHS: Se a data que você estiver adicionando for o último dia do mês, o resultado será sempre o último dia do mês do resultado, independentemente do tamanho do mês. Por exemplo, 30 de abril \$1 1 mês é o dia 31 de maio. 

  ```
  select add_months('2008-04-30',1);
  
  add_months
  ---------------------
  2008-05-31 00:00:00
  (1 row)
  ```
+ DATEADD: Se houver menos dias na data que você está adicionando do que no mês de resultado, o resultado será o dia correspondente do mês de resultado, não o último dia desse mês. Por exemplo, 30 de abril \$1 1 mês é o dia 30 de maio. 

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

A função DATEADD lida com a data de ano bissexto 02-29 de forma diferente ao usar 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
```