EXTRACT
Devuelve la parte indicada de una fecha, una hora o un intervalo.
PostgreSQL 17.9
EXTRACT(field FROM source)- field
- Parte que se quiere obtener, como palabra clave sin comillasPalabra claveCENTURYDAYDECADEDOWDOYEPOCHHOURISODOWISOYEARJULIANMICROSECONDSMILLENNIUMMILLISECONDSMINUTEMONTHQUARTERSECONDTIMEZONETIMEZONE_HOURTIMEZONE_MINUTEWEEKYEAR
- FROM source
- Fecha, hora o intervalotimestamp | interval
Valor devuelto
Número (numeric), por ejemplo 3 para MONTH; con SECOND, con parte decimal; EPOCH da para una fecha los segundos desde 1970-01-01 00:00 UTC y para un intervalo su duración en segundos
Ejemplos
Año de una fecha
PostgreSQL 17.9
SELECT EXTRACT(
YEAR
FROM TIMESTAMP '2023-01-01'
);Año de nacimiento a partir de una tabla
PostgreSQL 17.9
SELECT member_name,
EXTRACT(
YEAR
FROM birthday
) AS birth_year
FROM FamilyMembers;Segundos de un intervalo
PostgreSQL 17.9
SELECT EXTRACT(
EPOCH
FROM INTERVAL '1 day 2 hours'
);DOW e ISODOW para un domingo
PostgreSQL 17.9
SELECT EXTRACT(
DOW
FROM DATE '2024-03-10'
) AS dow,
EXTRACT(
ISODOW
FROM DATE '2024-03-10'
) AS isodow;Semana y año ISO en el cambio de año
PostgreSQL 17.9
SELECT EXTRACT(
WEEK
FROM DATE '2021-01-01'
) AS week,
EXTRACT(
ISOYEAR
FROM DATE '2021-01-01'
) AS iso_year,
EXTRACT(
YEAR
FROM DATE '2021-01-01'
) AS year;Detalles
Es la notación del estándar SQL; DATE_PART hace lo mismo, pero devuelve double precision.
Día de la semana: DOW da 0 para el domingo y 6 para el sábado; ISODOW va de 1 para el lunes a 7 para el domingo. DAYOFWEEK de MySQL cuenta de otra forma: el domingo es 1 y el sábado, 7.
WEEK es el número de semana ISO: la semana empieza el lunes y los primeros días de enero pueden pertenecer a la última semana del año anterior. Por eso el número de semana se usa junto con ISOYEAR, no con YEAR.