Función EXTRACT en PostgreSQL

La función EXTRACT en PostgreSQL es una herramienta fundamental para trabajar con datos temporales, ya que permite extraer partes específicas de una fecha u hora, como el año, mes, día, hora, minuto o segundo. Esta función es ideal para desglosar marcas temporales y utilizarlas en cálculos, reportes o filtros más detallados. Gracias a su flexibilidad, puedes obtener información precisa de cualquier campo temporal en tus consultas.

Como parte de las funciones de fecha en PostgreSQL, EXTRACT es ampliamente utilizada en aplicaciones donde los datos cronológicos juegan un papel clave. Por ejemplo, puedes usarla para analizar tendencias por años, filtrar registros por meses o incluso calcular la diferencia en segundos entre dos eventos.

En este artículo, primero exploraremos la sintaxis básica de EXTRACT, y luego te mostraré ejemplos prácticos que ilustran cómo implementarla de manera efectiva en distintos escenarios de uso.

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

Podemos indicar las siguientes partes de una fecha y hora en esta función:

CampoDescripción
centurysiglo
decadedecada
yearaño
quartertrimestre del año
monthmes
weeksemana (ISO)
daydía
hourhora
minuteminuto
secondsegundo
microsecondsmicrosegundo
millisecondsmilisegundos
dowdía de la semana (0-6)
doydía del año
epochnumero de segundos
isodowdía de la semana (ISO)
isoyearaño (ISO)

Sintaxis

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

EXTRACT(campo FROM origen)

Esta función consta de dos argumentos obligatorios:

  • campo: parte que se quiere extraer como por ejemplo year, day, etc.
  • origen: fecha de la que se va a extraer el primer argumento. Tiene que ser de tipo TIMESTAMP o INTERVAL. Si se le especifica un valor de tipo DATE, automáticamente se convertirá en TIMESTAMP.

Ejemplo

Extraer de un TIMESTAMP

SELECT EXTRACT(YEAR FROM TIMESTAMP '1986-09-26 15:30:00');
Función EXTRACT en PostgreSQL

Extraer de un INTERVAL

SELECT EXTRACT(YEAR FROM INTERVAL '20 years 5 months 7 days 
    1 hours 1 minutes 1 second' );

Escribir un comentario