Función DATE_ADD en PostgreSQL

La función DATE_ADD en PostgreSQL es una herramienta clave dentro del conjunto de funciones de fecha en PostgreSQL, diseñada para simplificar la suma de intervalos a campos de tipo fecha y hora con zona horaria. Esta función te permite agregar días, horas, minutos u otras unidades de tiempo a una fecha existente, facilitando cálculos temporales en tus consultas de manera eficiente y precisa.

En términos prácticos, DATE_ADD es ideal para escenarios como programar eventos, calcular fechas límite o generar intervalos de tiempo dinámicos en tus aplicaciones. Su flexibilidad la hace indispensable para trabajar con datos temporales en sistemas complejos que requieren manejar diferentes zonas horarias o intervalos personalizados.

En este artículo, primero exploraremos la sintaxis básica de DATE_ADD, y luego revisaremos ejemplos prácticos para que puedas aplicarla correctamente en tus consultas y optimizar tus operaciones con datos temporales.

Para más información, puedes consultar la documentación oficial de la función DATE_ADD en PostgreSQL.

Sintaxis

La sintaxis para utilizar la función DATE_ADD en PostgreSQL es la siguiente:

date_add ( timestamp with time zone, interval [, zone] )
  • timestamp with time zone: fecha con zona horaria.
  • interval: intervalo que se quiere agregar a la fecha.
  • zone: es un argumento opcional y sirve para definir la zona horaria.

Ejemplos

En el siguiente ejemplo comprobamos como se le suma un día a la fecha y hora ‘1986-09-26 00:00:00+02’

select date_add('1986-09-26 00:00:00+02'::timestamptz, '1 day'::interval, 'Europe/Warsaw');
Función DATE_ADD en PostgreSQL

Es posible utilizar esta función sin especificar la zona y sin especificar la hora, aunque el resultado siempre será un campo de fecha y hora con zona horaria.

select date_add('1986-09-26', '1 day'::interval);

En caso de que necesites añadir un intervalo y no te sea necesario la hora ni la zona, puedes convertirlo a texto con la función to_char:

select to_char(date_add('1986-09-26', '1 day'::interval), 'dd/mm/yyyy');

Escribir un comentario