

 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/). 

# Tipos de fecha y hora
<a name="r_Datetime_types"></a>

**Topics**
+ [Almacenamiento y rangos](#r_Datetime_types-storage-and-ranges)
+ [DATE](#r_Datetime_types-date)
+ [TIME](#r_Datetime_types-time)
+ [TIMETZ](#r_Datetime_types-timetz)
+ [TIMESTAMP](#r_Datetime_types-timestamp)
+ [TIMESTAMPTZ](#r_Datetime_types-timestamptz)
+ [Ejemplos con tipos de fecha y hora](r_Examples_with_datetime_types.md)
+ [Literales de fecha, hora y marca temporal](r_Date_and_time_literals.md)
+ [Literales y tipos de datos de intervalo](r_interval_data_types.md)

Los tipos de datos de fecha y hora incluyen DATE, TIME, TIMETZ, TIMESTAMP y TIMESTAMPTZ.

## Almacenamiento y rangos
<a name="r_Datetime_types-storage-and-ranges"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/redshift/latest/dg/r_Datetime_types.html)

## DATE
<a name="r_Datetime_types-date"></a>

Utilice el tipo de datos DATE para almacenar fechas de calendario simples sin marcas temporales.

## TIME
<a name="r_Datetime_types-time"></a>

TIME es un alias de TIME WITHOUT TIME ZONE.

Utilice el tipo de datos TIME para almacenar la hora del día. 

Las columnas TIME almacenan valores con un máximo de seis dígitos de precisión para las fracciones de segundos.

De forma predeterminada, los valores TIME están en hora universal coordinada (UTC) en las tablas de usuario y las tablas de sistema de Amazon Redshift. 

## TIMETZ
<a name="r_Datetime_types-timetz"></a>

TIMETZ es un alias de TIME WITH TIME ZONE.

Utilice el tipo de datos TIMETZ para almacenar la hora del día con una zona horaria. 

Las columnas TIMETZ almacenan valores con un máximo de seis dígitos de precisión para las fracciones de segundos.

De forma predeterminada, los valores TIMETZ están en UTC en las tablas de usuario y las tablas de sistema de Amazon Redshift. 

## TIMESTAMP
<a name="r_Datetime_types-timestamp"></a>

TIMESTAMP es un alias de TIMESTAMP WITHOUT TIME ZONE.

Use el tipo de datos TIMESTAMP para almacenar valores de marca temporal completa que incluyen la fecha y la hora del día. 

Las columnas TIMESTAMP almacenan valores con un máximo de seis dígitos de precisión para las fracciones de segundos.

Si inserta una fecha en una columna TIMESTAMP o una fecha con un valor de marca temporal parcial, el valor se convierte de manera implícita a un valor de marca temporal completa. Este valor de marca temporal completo tiene valores predeterminados (00) para las horas, los minutos y los segundos que faltan. Se ignoran los valores de zona horaria en cadenas de entrada.

De forma predeterminada, los valores TIMESTAMP están en UTC en las tablas de usuario y las tablas de sistema de Amazon Redshift. 

## TIMESTAMPTZ
<a name="r_Datetime_types-timestamptz"></a>

TIMESTAMPTZ es un alias de TIMESTAMP WITH TIME ZONE.

Use el tipo de datos TIMESTAMPTZ para introducir valores de marca temporal completa que incluyan la fecha, la hora del día y una zona horaria. Cuando un valor de entrada incluye una zona horaria, Amazon Redshift utiliza la zona horaria para convertir el valor a la UTC y almacena el valor de la UTC.

Para ver una lista de los nombres de zonas horarias compatibles, ejecute el siguiente comando. 

```
select pg_timezone_names();
```

 Para ver una lista de las abreviaturas de zonas horarias compatibles, ejecute el siguiente comando. 

```
select pg_timezone_abbrevs();
```

Puede obtener información actualizada acerca de las zonas horarias en la [base de datos de zonas horarias de IANA](https://www.iana.org/time-zones).

La siguiente tabla tiene ejemplos de formatos de zonas horarias. 


| Formato | Ejemplo | 
| --- | --- | 
|  dd mon hh:mi:ss yyyy tz  |  17 dic 07:37:16 1997 PST   | 
|  mm/dd/yyyy hh:mi:ss.ss tz  |  12/17/1997 07:37:16.00 PST  | 
|  mm/dd/yyyy hh:mi:ss.ss tz  |  12/17/1997 07:37:16.00 EE. UU./Pacífico  | 
|  yyyy-mm-dd hh:mi:ss\$1/-tz  |  1997-12-17 07:37:16-08   | 
| dd.mm.yyyy hh:mi:ss tz |  17.12.1997 07:37:16.00 PST  | 

Las columnas TIMESTAMPTZ almacenan valores con un máximo de seis dígitos de precisión para las fracciones de segundos.

Si inserta una fecha en una columna TIMESTAMPTZ o una fecha con una marca temporal parcial, el valor se convierte de manera implícita a un valor de marca temporal completa. Este valor de marca temporal completo tiene valores predeterminados (00) para las horas, los minutos y los segundos que faltan.

Los valores TIMESTAMPTZ son UTC en tablas del usuario.

# Ejemplos con tipos de fecha y hora
<a name="r_Examples_with_datetime_types"></a>

A continuación, encontrará ejemplos de cómo trabajar con tipos de fecha y hora compatibles con Amazon Redshift.

## Ejemplos de fecha
<a name="r_Examples_with_datetime_types-date-examples"></a>

Los siguientes ejemplos insertan fechas que tienen diferentes formatos y muestran la salida. 

```
create table datetable (start_date date, end_date date);
```

```
insert into datetable values ('2008-06-01','2008-12-31');

insert into datetable values ('Jun 1,2008','20081231');
```

```
select * from datetable order by 1;

start_date |  end_date
-----------------------
2008-06-01 | 2008-12-31
2008-06-01 | 2008-12-31
```

Si inserta un valor de marca temporal en una columna DATE, se ignora la parte de la hora y solo se carga la fecha.

## Ejemplos de tiempo
<a name="r_Examples_with_datetime_types-time-examples"></a>

Los siguientes ejemplos insertan los valores TIME y TIMETZ que tienen diferentes formatos y muestran la salida.

```
create table timetable (start_time time, end_time timetz);
```

```
insert into timetable values ('19:11:19','20:41:19 UTC');
insert into timetable values ('191119', '204119 UTC');
```

```
select * from timetable order by 1;
start_time |  end_time
------------------------
 19:11:19  | 20:41:19+00
 19:11:19  | 20:41:19+00
```

## Ejemplos de marca temporal
<a name="r_Examples_with_datetime_types-timestamp-examples"></a>

Si inserta una fecha en una columna TIMESTAMP o TIMESTAMPTZ, la hora es, por defecto, la medianoche. Por ejemplo, si inserta el literal `20081231`, el valor almacenado es `2008-12-31 00:00:00`. 

Para cambiar la zona horaria de la sesión actual, use el comando [SET](r_SET.md) para establecer el parámetro de configuración [timezone](r_timezone_config.md).

En el siguiente ejemplo se insertan marcas temporales que tienen diferentes formatos y muestran la tabla de resultados. 

```
create table tstamp(timeofday timestamp, timeofdaytz timestamptz);

insert into tstamp values('Jun 1,2008  09:59:59', 'Jun 1,2008 09:59:59 EST' );
insert into tstamp values('Dec 31,2008 18:20','Dec 31,2008 18:20');
insert into tstamp values('Jun 1,2008  09:59:59 EST', 'Jun 1,2008 09:59:59');

SELECT * FROM tstamp;

+---------------------+------------------------+
|      timeofday      |      timeofdaytz       |
+---------------------+------------------------+
| 2008-06-01 09:59:59 | 2008-06-01 14:59:59+00 |
| 2008-12-31 18:20:00 | 2008-12-31 18:20:00+00 |
| 2008-06-01 09:59:59 | 2008-06-01 09:59:59+00 |
+---------------------+------------------------+
```

# Literales de fecha, hora y marca temporal
<a name="r_Date_and_time_literals"></a>

A continuación, se indican las reglas para trabajar con literales de fecha, hora y marca temporal compatibles con Amazon Redshift. 

## Fechas
<a name="r_Date_and_time_literals-dates"></a>

Las siguientes fechas de entrada son ejemplos válidos de valores de fecha literales del tipo de dato DATE que puede cargar en tablas de Amazon Redshift. Se supone que el modo predeterminado `MDY DateStyle` está en vigor. Este modo significa que el valor del mes precede al valor del día en las cadenas, como `1999-01-08` y `01/02/00`. 

**nota**  
Un literal de marca temporal o fecha debe encerrarse entre comillas cuando lo carga a la tabla.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/redshift/latest/dg/r_Date_and_time_literals.html)

## Times
<a name="r_Date_and_time_literals-times"></a>

Las siguientes horas de entrada son ejemplos válidos de valores de hora literales para los tipos de datos TIME y TIMETZ que puede cargar en tablas de Amazon Redshift. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/redshift/latest/dg/r_Date_and_time_literals.html)

## Marcas temporales
<a name="r_Date_and_time_literals-timestamps"></a>

Las siguientes marcas de tiempo de entrada son ejemplos válidos de valores de tiempo literales para los tipos de datos TIMESTAMP y TIMESTAMPTZ que puede cargar en tablas de Amazon Redshift. Todos los literales de fecha válidos pueden combinarse con los siguientes literales de hora. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/redshift/latest/dg/r_Date_and_time_literals.html)

## Valores de fecha y hora especiales
<a name="r_Date_and_time_literals-special-datetime-values"></a>

Los siguiente valores especiales se pueden usar como literales de fecha y hora y como argumentos para funciones de fecha. Requieren comillas simples y se convierten en valores de marca temporal regulares durante el procesamiento de consultas. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/redshift/latest/dg/r_Date_and_time_literals.html)

En los siguientes ejemplos, se muestra cómo `now` y `today` trabajan en conjunto con la función DATEADD.

```
select dateadd(day,1,'today');

date_add
---------------------
2009-11-17 00:00:00
(1 row)

select dateadd(day,1,'now');

date_add
----------------------------
2009-11-17 10:45:32.021394
(1 row)
```

# Literales y tipos de datos de intervalo
<a name="r_interval_data_types"></a>

Puede usar un tipo de datos de intervalo para almacenar duraciones de tiempo en unidades como `seconds`, `minutes`, `hours`, `days`, `months` y `years`. Los literales y los tipos de datos de intervalo se pueden usar en los cálculos de fecha y hora, por ejemplo, agregar intervalos a fechas y marcas temporales, sumar intervalos y restar un intervalo de una fecha o marca temporal. Los literales de intervalo se pueden usar como valores de entrada para las columnas de tipos de datos de intervalos de una tabla. 

## Sintaxis del tipo de datos de intervalo
<a name="r_interval_data_types-syntax"></a>

Para especificar un tipo de datos de intervalo para almacenar una duración de tiempo en años y meses:

```
INTERVAL year_to_month_qualifier
```

Para especificar un tipo de datos de intervalo para almacenar una duración en días, horas, minutos y segundos:

```
INTERVAL day_to_second_qualifier [ (fractional_precision) ]
```

## Sintaxis de literal de intervalo
<a name="r_interval_data_types-syntax-literal"></a>

Para especificar un literal de intervalo para definir una duración de tiempo en años y meses:

```
INTERVAL quoted-string year_to_month_qualifier
```

Para especificar un literal de intervalo para definir una duración en días, horas, minutos y segundos:

```
INTERVAL quoted-string day_to_second_qualifier [ (fractional_precision) ]
```

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

 *quoted-string*   
Especifica un valor numérico positivo o negativo especificando una cantidad y la unidad de fecha y hora como cadena de entrada. Si *quoted-string* contiene solo un valor numérico, Amazon Redshift determina las unidades de *year\$1to\$1month\$1qualifier* o *day\$1to\$1second\$1qualifier*. Por ejemplo, `'23' MONTH` representa `1 year 11 months`, `'-2' DAY` representa `-2 days 0 hours 0 minutes 0.0 seconds`, `'1-2' MONTH` representa `1 year 2 months` y `'13 day 1 hour 1 minute 1.123 seconds' SECOND` representa `13 days 1 hour 1 minute 1.123 seconds`. Para obtener más información acerca de los formatos de salida de un intervalo, consulte [Estilos de intervalo](#r_interval_data_types-interval-styles).

 *year\$1to\$1month\$1qualifier*   
Especifica el rango del intervalo. Si usa un calificador y crea un intervalo con unidades de tiempo más pequeñas que el calificador, Amazon Redshift corta y descarta las partes más pequeñas del intervalo. Los valores válidos para *year\$1to\$1month\$1qualifier* son:  
+ `YEAR`
+ `MONTH`
+ `YEAR TO MONTH`

 *day\$1to\$1second\$1qualifier*   
Especifica el rango del intervalo. Si usa un calificador y crea un intervalo con unidades de tiempo más pequeñas que el calificador, Amazon Redshift corta y descarta las partes más pequeñas del intervalo. Los valores válidos para *day\$1to\$1second\$1qualifier* son:  
+ `DAY`
+ `HOUR`
+ `MINUTE`
+ `SECOND`
+ `DAY TO HOUR`
+ `DAY TO MINUTE`
+ `DAY TO SECOND`
+ `HOUR TO MINUTE`
+ `HOUR TO SECOND`
+ `MINUTE TO SECOND`
El resultado del literal INTERVAL se trunca al componente INTERVAL más pequeño especificado. Por ejemplo, al usar un calificador MINUTE, Amazon Redshift descarta las unidades de tiempo inferiores a MINUTE.  

```
select INTERVAL '1 day 1 hour 1 minute 1.123 seconds' MINUTE
```
El valor resultante se trunca en `'1 day 01:01:00'`.

 *fractional\$1precision*   
Parámetro opcional que especifica el número de dígitos fraccionales permitidos en el intervalo. El argumento *fractional\$1precision* solo se debe especificar si el intervalo contiene SECOND. Por ejemplo, `SECOND(3)` crea un intervalo que permite solo tres dígitos fraccionales, como 1234 segundos. El número máximo de dígitos fraccionales es seis.

La configuración de la sesión `interval_forbid_composite_literals` determina si se devuelve un error cuando se especifica un intervalo con las partes YEAR TO MONTH y DAY TO SECOND. Para obtener más información, consulte [interval\$1forbid\$1composite\$1literals](r_interval_forbid_composite_literals.md).

## Aritmética de intervalos
<a name="r_interval_data_types-arithmetic"></a>

Puede utilizar valores de intervalo con otros valores de fecha y hora para realizar operaciones aritméticas. En las siguientes tablas se describen las operaciones disponibles y los resultados de tipo de datos de cada operación. 

**nota**  
 Las operaciones que pueden producir resultados `date` y `timestamp` lo hacen en función de la unidad de tiempo más pequeña implicada en la ecuación. Por ejemplo, cuando se agrega un `interval` a una `date` el resultado es una `date` si es un intervalo YEAR TO MONTH y una marca temporal si es un intervalo DAY TO SECOND. 

Las operaciones en las que el primer operando es un `interval` producen los siguientes resultados para el segundo operando dado:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/redshift/latest/dg/r_interval_data_types.html)

Las operaciones en las que el primer operando es una `date` producen los siguientes resultados para el segundo operando dado:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/redshift/latest/dg/r_interval_data_types.html)

Las operaciones en las que el primer operando es una `timestamp` producen los siguientes resultados para el segundo operando dado:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/redshift/latest/dg/r_interval_data_types.html)

## Estilos de intervalo
<a name="r_interval_data_types-interval-styles"></a>

Puede utilizar el comando [SET](r_SET.md) de SQL para cambiar el formato de pantalla de salida de los valores de intervalos. Cuando utilice el tipo de datos de intervalo en SQL, conviértalo en texto para ver el estilo de intervalo esperado, por ejemplo, `YEAR TO MONTH::text`. Los valores disponibles para ESTABLECER el valor `IntervalStyle` son:
+ `postgres`: sigue el estilo de PostgreSQL. Esta es la opción predeterminada.
+ `postgres_verbose`: sigue el estilo detallado de PostgreSQL.
+ `sql_standard`: sigue el estilo de literales de intervalo estándar de SQL.

El siguiente comando establece el estilo de intervalo en `sql_standard`.

```
SET IntervalStyle to 'sql_standard';
```

**Formato de salida postgres**

A continuación, se muestra el formato de salida del estilo de intervalo `postgres`. Cada valor numérico puede ser negativo.

```
'<numeric> <unit> [, <numeric> <unit> ...]'
```

```
select INTERVAL '1-2' YEAR TO MONTH::text 

varchar
---------------
1 year 2 mons
```

```
select INTERVAL '1 2:3:4.5678' DAY TO SECOND::text

varchar
------------------
1 day 02:03:04.5678
```

**Formato de salida postgres\$1verbose**

La sintaxis de postgres\$1verbose es similar a la de postgres, pero las salidas de postgres\$1verbose también contienen la unidad de tiempo.

```
'[@] <numeric> <unit> [, <numeric> <unit> ...] [direction]'
```

```
select INTERVAL '1-2' YEAR TO MONTH::text 

varchar
-----------------
@ 1 year 2 mons
```

```
select INTERVAL '1 2:3:4.5678' DAY TO SECOND::text

varchar
---------------------------
@ 1 day 2 hours 3 mins 4.56 secs
```

**Formato de salida sql\$1standard**

Los valores del intervalo de año a mes tienen el siguiente formato. Si se especifica un signo negativo antes del intervalo, eso indica que el intervalo es un valor negativo y se aplica a todo el intervalo.

```
'[-]yy-mm'
```

Los valores del intervalo de día a segundo tienen el siguiente formato.

```
'[-]dd hh:mm:ss.ffffff'
```

```
SELECT INTERVAL '1-2' YEAR TO MONTH::text 
  
varchar   
-------
1-2
```

```
select INTERVAL '1 2:3:4.5678' DAY TO SECOND::text 

varchar
---------------
1 2:03:04.5678
```

## Ejemplos de tipo de datos de intervalo
<a name="r_interval_data_types-examples"></a>

En los siguientes ejemplos, se muestra cómo usar tipos de datos INTERVAL con tablas.

```
create table sample_intervals (y2m interval month, h2m interval hour to minute);
insert into sample_intervals values (interval '20' month, interval '2 days 1:1:1.123456' day to second);
select y2m::text, h2m::text from sample_intervals;


      y2m      |       h2m      
---------------+-----------------
 1 year 8 mons | 2 days 01:01:00
```

```
update sample_intervals set y2m = interval '2' year where y2m = interval '1-8' year to month;
select * from sample_intervals;

   y2m   |       h2m       
---------+-----------------
 2 years | 2 days 01:01:00
```

```
delete from sample_intervals where h2m = interval '2 1:1:0' day to second;
select * from sample_intervals;

 y2m | h2m 
-----+-----
```

## Ejemplos de literales de intervalo
<a name="r_interval_data_types_literals-examples"></a>

Los siguientes ejemplos se ejecutan con el estilo de intervalo establecido en `postgres`.

En el siguiente ejemplo, se muestra cómo crear un literal INTERVAL de 1 año.

```
select INTERVAL '1' YEAR 

intervaly2m
---------------
1 years 0 mons
```

Si especifica una *quoted-string* que supere el calificador, las unidades de tiempo restantes se truncan con respecto al intervalo. En el ejemplo siguiente, un intervalo de 13 meses se convierte en 1 año y 1 mes, pero el mes restante se omite debido al calificador YEAR.

```
select INTERVAL '13 months' YEAR

intervaly2m
---------------
1 years 0 mons
```

Si utiliza un calificador inferior a la cadena de intervalos, se incluyen las unidades sobrantes.

```
select INTERVAL '13 months' MONTH

intervaly2m
---------------
1 years 1 mons
```

Al especificar una precisión en el intervalo, se trunca el número de dígitos fraccionarios hasta alcanzar la precisión especificada.

```
select INTERVAL '1.234567' SECOND (3)

intervald2s
--------------------------------
0 days 0 hours 0 mins 1.235 secs
```

Si no especifica una precisión, Amazon Redshift utiliza la precisión máxima de 6.

```
select INTERVAL '1.23456789' SECOND

intervald2s
-----------------------------------
0 days 0 hours 0 mins 1.234567 secs
```

En el siguiente ejemplo, se muestra cómo crear un intervalo con rangos.

```
select INTERVAL '2:2' MINUTE TO SECOND

intervald2s
------------------------------
0 days 0 hours 2 mins 2.0 secs
```

Los calificadores dictan las unidades que se especifican. Por ejemplo, aunque en el siguiente ejemplo se utiliza la misma *quoted-string* de “2:2” que en el ejemplo anterior, Amazon Redshift reconoce que utiliza diferentes unidades de tiempo debido al calificador.

```
select INTERVAL '2:2' HOUR TO MINUTE

intervald2s
------------------------------
0 days 2 hours 2 mins 0.0 secs
```

También se admiten las abreviaturas y los plurales de cada unidad. Por ejemplo, `5s`, `5 second` y `5 seconds` son intervalos equivalentes. Las unidades admitidas son años, meses, horas, minutos y segundos.

```
select INTERVAL '5s' SECOND

intervald2s
------------------------------
0 days 0 hours 0 mins 5.0 secs
```

```
select INTERVAL '5 HOURS' HOUR

intervald2s
------------------------------
0 days 5 hours 0 mins 0.0 secs
```

```
select INTERVAL '5 h' HOUR

intervald2s
------------------------------
0 days 5 hours 0 mins 0.0 secs
```

# Ejemplos de literales de intervalo sin sintaxis de calificador
<a name="r_interval_literals"></a>

**nota**  
En los siguientes ejemplos se muestra el uso de un literal de intervalo sin un calificador `YEAR TO MONTH` o `DAY TO SECOND`. Para obtener información sobre el uso del literal de intervalo recomendado con un calificador, consulte [Literales y tipos de datos de intervalo](r_interval_data_types.md).

Use un literal de intervalo para identificar períodos específicos de tiempo, como `12 hours` o `6 months`. Puede usar estos literales de intervalo en condiciones y cálculos que involucran expresiones de fecha y hora. 

 Un literal de intervalo se expresa como una combinación de la palabra clave INTERVAL con una cantidad numérica y una parte de fecha compatible, por ejemplo, `INTERVAL '7 days'` o `INTERVAL '59 minutes'`. Puede conectar varias cantidades y unidades para formar un intervalo más preciso, por ejemplo: `INTERVAL '7 days, 3 hours, 59 minutes'`. También se admiten abreviaturas y plurales de cada unidad; por ejemplo: `5 s`, `5 second` y `5 seconds` son intervalos equivalentes.

Si no especifica una parte de fecha, el valor de intervalo representa segundos. Puede especificar el valor de cantidad como una fracción (por ejemplo: `0.5 days`).

En los siguientes ejemplos se muestra una serie de cálculos con diferentes valores de intervalo.

A continuación, se agrega 1 segundo a la fecha especificada.

```
select caldate + interval '1 second' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 00:00:01
(1 row)
```

A continuación, se agrega 1 minuto a la fecha especificada.

```
select caldate + interval '1 minute' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 00:01:00
(1 row)
```

A continuación, se agregan 3 horas y 35 minutos a la fecha especificada.

```
select caldate + interval '3 hours, 35 minutes' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 03:35:00
(1 row)
```

A continuación, se agregan 52 semanas a la fecha especificada.

```
select caldate + interval '52 weeks' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2009-12-30 00:00:00
(1 row)
```

A continuación, se agregan 1 semana, 1 hora, 1 minuto y 1 segundo a la fecha especificada.

```
select caldate + interval '1w, 1h, 1m, 1s' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2009-01-07 01:01:01
(1 row)
```

A continuación, se agregan 12 horas (medio día) a la fecha especificada.

```
select caldate + interval '0.5 days' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 12:00:00
(1 row)
```

Lo siguiente resta 4 meses al 15 de febrero de 2023 y el resultado es 15 de octubre de 2022.

```
select date '2023-02-15' - interval '4 months';

?column?
---------------------
2022-10-15 00:00:00
```

Lo siguiente resta 4 meses al 31 de marzo de 2023 y el resultado es 30 de noviembre de 2022. El cálculo tiene en cuenta el número de días de un mes.

```
select date '2023-03-31' - interval '4 months';

?column?
---------------------
2022-11-30 00:00:00
```