En este artículo exploraremos las funciones de fecha en PostgreSQL más utilizadas, funciones esenciales que te permiten manipular fechas y tiempos de manera eficiente. A través de ejemplos prácticos, podrás ver cómo aplicar estas funciones en tus consultas. Haz clic sobre el nombre de cada función para conocer más detalles sobre su funcionamiento y cómo implementarla en tu entorno de trabajo.
Funciones de fecha y hora
Antes de sumergirte en la lista completa de funciones de fecha en PostgreSQL, es importante destacar que estas herramientas te permiten realizar desde cálculos básicos hasta transformaciones avanzadas con fechas y tiempos. Ya sea que necesites extraer partes específicas de una fecha, calcular diferencias entre momentos o formatear resultados, PostgreSQL tiene una función para cada necesidad. A continuación, encontrarás un listado con todas las funciones disponibles, organizadas para que puedas identificar fácilmente cuál es la más adecuada para tus consultas.
Función | Descripción |
---|---|
AGE | Calcula la diferencia entre dos fechas devolviendo años, meses y días |
CLOCK_TIMESTAMP | Devuelve la fecha y hora en el momento de invocar a la función. |
CURRENT_DATE | Devuelve la fecha actual |
CURRENT_TIME | Devuelve la hora actual |
CURRENT_TIMESTAMP | Devuelve la fecha y la hora con la zona horaria de cuando se inicio la transacción |
DATE_ADD | Añade un intervalo a una fecha y hora con zona horaria. |
DATE_BIN | Divide la marca de tiempo de entrada en el intervalo especificado. |
DATE_PART | Devuelve parte de una fecha y hora |
DATE_TRUNC | Trunca la parte especificada de una fecha y hora |
EXTRACT | Extrae la parte indicada de una fecha y hora |
ISFINITE | Comprueba si una fecha o intervalo es infinito |
JUSTIFY_DAYS | Cada 30 días lo muestra en formato de mes y dia |
JUSTIFY_HOURS | Cada 24 horas lo muestra en formato de día y hora |
JUSTIFY_INTERVAL | Muestra los días y horas indicados |
LOCALTIME | Devuelve la hora del inicio de la transacción |
LOCALTIMESTAMP | Devuelve la fecha y hora del inicio de la transacción |
MAKE_DATE | Crea una fecha a partir de los campos año, mes y día. |
MAKE_INTERVAL | Crea un intervalo a partir de campos de años, meses, semanas, días, horas, minutos y segundos. |
MAKE_TIME | Crea la hora a partir de los campos de horas, minutos y segundos |
MAKE_TIMESTAMP | Crea una marca de tiempo a partir de los campos año, mes, día, hora, minuto y segundos. |
MAKE_TIMESTAMPTZ | Crea una marca de tiempo con zona horaria a partir de los campos año, mes, día, hora, minuto y segundos. |
NOW | Devuelve la fecha y hora del inicio de la transacción con la zona horaria |
STATEMENT_TIMESTAMP | Devuelve la fecha y hora actuales en las que se ejecuta la instrucción actual |
TIMEOFDAY | Devuelve la fecha y hora actuales, como clock_timestamp, pero en cadena de texto) |
TRANSACTION_TIMESTAMP | Igual que NOW() |
TO_DATE | Convierte una cadena en fecha |
TO_TIMESTAMP | Convierte una cadena en fecha y hora |
Operadores de fecha y hora
Antes de explorar los operadores de fecha y hora en PostgreSQL, vale la pena mencionar que estos son fundamentales para realizar comparaciones, cálculos y manipulaciones entre fechas y tiempos. Con ellos, puedes sumar o restar intervalos, comparar rangos temporales y realizar operaciones avanzadas que simplifican el manejo de datos cronológicos. A continuación, encontrarás un listado detallado de operadores, listos para que los incorpores en tus consultas de forma eficiente.
Operador | Descripción y ejemplo |
---|---|
date + integer → date | Añadir un número de días a una fecha fecha ‘2001-09-28’ + 7 → 2001-10-05 |
date + interval → timestamp | Añadir un intervalo a una fecha fecha ‘2001-09-28’ + intervalo ‘1 hora’ → 2001-09-28 01:00:00 |
fecha + hora → marca de tiempo | Añadir una hora del día a una fecha fecha ‘2001-09-28′ + hora ’03:00’ → 2001-09-28 03:00:00 |
intervalo + intervalo → intervalo | Añadir intervalos intervalo ‘1 día’ + intervalo ‘1 hora’ → 1 día 01:00:00 |
timestamp + intervalo → timestamp | Añadir un intervalo a una marca de tiempo timestamp ‘2001-09-28 01:00′ + intervalo ’23 horas’ → 2001-09-29 00:00:00 |
tiempo + intervalo → tiempo | tiempo + intervalo → tiempo Añadir un intervalo a un tiempo hora ’01:00′ + intervalo ‘3 horas’ → 04:00:00 |
intervalo → intervalo | Negar un intervalo intervalo ’23 horas’ → -23:00:00 |
fecha – fecha → entero | Restar fechas, produciendo el número de días transcurridos. fecha ‘2001-10-01’ – fecha ‘2001-09-28’ → 3 |
fecha – entero → fecha | Restar un número de días a una fecha fecha ‘2001-10-01’ – 7 → 2001-09-24 |
fecha – intervalo → marca de tiempo | Restar un intervalo de una fecha fecha ‘2001-09-28’ – intervalo ‘1 hora’ → 2001-09-27 23:00:00 |
tiempo – tiempo → intervalo | Restar tiempos tiempo ’05:00′ – tiempo ’03:00′ → 02:00:00 |
tiempo – intervalo → tiempo | Restar un intervalo a un tiempo tiempo ’05:00′ – intervalo ‘2 horas’ → 03:00:00 |
timestamp – intervalo → timestamp | Restar un intervalo de una marca de tiempo timestamp ‘2001-09-28 23:00′ – intervalo ’23 horas’ → 2001-09-28 00:00:00 |
intervalo – intervalo → intervalo | Restar intervalos intervalo ‘1 día’ – intervalo ‘1 hora’ → 1 día -01:00:00 |
timestamp – timestamp → intervalo | Restar marcas de tiempo (convirtiendo intervalos de 24 horas en días, de forma similar a justify_hours()). timestamp ‘2001-09-29 03:00’ – timestamp ‘2001-07-27 12:00’ → 63 días 15:00:00 |
intervalo * doble precisión → intervalo | Multiplicar un intervalo por un escalar intervalo ‘1 segundo’ * 900 → 00:15:00 intervalo ‘1 día’ * 21 → 21 días intervalo ‘1 hora’ * 3.5 → 03:30:00 |
intervalo / doble precisión → intervalo | Dividir un intervalo por un escalar intervalo ‘1 hora’ / 1.5 → 00:40:00 |