La función EXTRACT en Oracle es una herramienta esencial 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 perfecta para desglosar marcas temporales y utilizarlas en cálculos, reportes o filtros más detallados. Su versatilidad facilita obtener información precisa de cualquier campo temporal dentro de tus consultas.
Como parte de las funciones de fecha en Oracle, EXTRACT es ampliamente empleada en aplicaciones donde los datos cronológicos tienen un rol importante. Por ejemplo, puedes usarla para analizar tendencias anuales, filtrar registros por meses o calcular diferencias en segundos entre eventos específicos.
En este artículo, exploraremos primero la sintaxis básica de EXTRACT y luego veremos ejemplos prácticos para mostrar cómo implementarla eficazmente en distintos casos de uso.
Para más información, consulta la documentación oficial de la función EXTRACT en Oracle.
Con EXTRACT, puedes especificar las siguientes partes de una fecha y hora:
TIPO DATO | CAMPO DISPONIBLE |
---|---|
DATE | year, month, day |
INTERVAL YEAR TO MONTH | year, month |
INTERVAL DAY TO SECOND | day, hour, minute, second |
TIMESTAMP | year, month, day, hour, minute, second |
Sintaxis
La sintaxis para utilizar la función EXTRACT en Oracle 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.
Ejemplo
Extraer de una fecha el año, mes y día
SELECT EXTRACT( YEAR FROM TO_DATE( '26-SEP-1986 15:30:00 ', 'DD-Mon-YYYY HH24:MI:SS' ) ) "AÑO", EXTRACT( MONTH FROM TO_DATE( '26-SEP-1986 15:30:00 ', 'DD-Mon-YYYY HH24:MI:SS' ) ) MES, EXTRACT( DAY FROM TO_DATE( '26-SEP-1986 15:30:00 ', 'DD-Mon-YYYY HH24:MI:SS' ) ) DIA FROM DUAL;

Extraer hora, minuto y segundo de la fecha del sistema
SELECT TO_CHAR( SYSDATE, 'HH24' ) hora, TO_CHAR( SYSDATE, 'MI' ) minuto, TO_CHAR( SYSDATE, 'SS' ) segundo FROM DUAL;
