

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Función DATEADD
<a name="r_DATEADD_function"></a>

Aumenta un valor de DATE, TIME, TIMETZ o TIMESTAMP según un intervalo especificado. 

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

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

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

 *datepart*   
La parte de la fecha (año, mes, día u hora, por ejemplo) sobre la que opera la función. Para obtener más información, consulte [Partes de fecha para funciones de fecha o marca temporal](r_Dateparts_for_datetime_functions.md). 

 *intervalo*   
Un número entero que especifica el intervalo (cantidad de días, por ejemplo) por agregar a la expresión objetivo. Un número entero negativo resta al intervalo. 

 *date*\$1*time*\$1*timetz*\$1*timestamp*  
Una columna DATE, TIME, TIMETZ o TIMESTAMP o una expresión que, de forma implícita, se convierte a una DATE, TIME, TIMETZ o TIMESTAMP. La expresión de DATE, TIME, TIMETZ o TIMESTAMP debe contener la parte de fecha especificada. 

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

TIMESTAMP, TIME o TIMETZ según el tipo de datos de entrada.

## Ejemplos con una columna DATE
<a name="r_DATEADD_function-examples"></a>

En el siguiente ejemplo, se agregan 30 días a cada fecha en noviembre que se encuentra en la tabla de 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)
```

 En el siguiente ejemplo, se agregan 18 meses a un valor de fecha literal.

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

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

El nombre predeterminado de la columna para una función DATEADD es DATE\$1ADD. La marca temporal predeterminada para un valor de fecha es `00:00:00`. 

En el siguiente ejemplo, se agregan 30 minutos a un valor de fecha que no especifica una marca temporal.

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

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

Puede nombrar las partes de la fecha de manera completa o abreviada. En este caso, *m* representa a los minutos y no a lo meses. 

## Ejemplos con una columna TIME
<a name="r_DATEADD_function-examples-time"></a>

La siguiente tabla de ejemplo, TIME\$1TEST, tiene una columna TIME\$1VAL (tipo TIME) con tres valores insertados. 

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

En el siguiente ejemplo, se agregan 5 minutos a cada TIME\$1VAL de la tabla TIME\$1TEST.

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

En el siguiente ejemplo, se agregan 8 horas a un valor de fecha literal.

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

El siguiente ejemplo muestra cuando una hora supera las 24:00:00 o cuando es antes de las 00:00:00. 

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

## Ejemplos con una columna TIMETZ
<a name="r_DATEADD_function-examples-timetz"></a>

Los valores de salida en estos ejemplos están en formato UTC, que es la zona horaria predeterminada. 

La siguiente tabla de ejemplo, TIMETZ\$1TEST, tiene una columna TIMETZ\$1VAL (tipo TIMETZ) con tres valores insertados.

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

En el siguiente ejemplo, se agregan 5 minutos a cada TIMETZ\$1VAL de la tabla 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
```

En el siguiente ejemplo, se agregan 2 horas a un valor de timetz literal.

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

## Ejemplos con una columna TIMESTAMP
<a name="r_DATEADD_function-examples-timestamp"></a>

Los valores de salida en estos ejemplos están en formato UTC, que es la zona horaria predeterminada. 

La siguiente tabla de ejemplo, TIMESTAMP\$1TEST tiene una columna TIMESTAMP\$1VAL (tipo TIMESTAMP) con tres valores insertados.

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

El siguiente ejemplo agrega 20 años solo a los valores TIMESTAMP\$1VAL en TIMESTAMP\$1TEST anteriores al año 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
```

En el siguiente ejemplo se agregan 5 segundos a un valor de marca temporal literal escrito sin un indicador de segundos.

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

## Notas de uso
<a name="r_DATEADD_usage_notes"></a>

 Las funciones DATEADD(month, ...) y ADD\$1MONTHS administran las fechas que caen en fin de mes de manera diferente:
+ ADD\$1MONTHS: si la fecha que se agrega es el último día del mes, el resultado es siempre el último día del mes en el resultado, sin importar su longitud. Por ejemplo, 30 de abril \$1 1 mes es 31 de mayo. 

  ```
  select add_months('2008-04-30',1);
  
  add_months
  ---------------------
  2008-05-31 00:00:00
  (1 row)
  ```
+ DATEADD: si en la fecha que se agrega hay menos días que en el mes del resultado, el resultado será el día correspondiente del mes del resultado, no el último día de ese mes. Por ejemplo, 30 de abril \$1 1 mes es 30 de mayo. 

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

La función DATEADD administra la fecha 02-29 de año bisiesto de manera diferente con 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
```