Referencia de funciones

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 comillas
Palabra clave
CENTURYDAYDECADEDOWDOYEPOCHHOURISODOWISOYEARJULIANMICROSECONDSMILLENNIUMMILLISECONDSMINUTEMONTHQUARTERSECONDTIMEZONETIMEZONE_HOURTIMEZONE_MINUTEWEEKYEAR
FROM source
Fecha, hora o intervalo
timestamp | 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'
	);
extract
2023

Año de nacimiento a partir de una tabla

PostgreSQL 17.9
SELECT member_name,
	EXTRACT(
		YEAR
		FROM birthday
	) AS birth_year
FROM FamilyMembers;
member_namebirth_year
Headley Quincey1960
Flavia Quincey1963
Andie Quincey1983
Lela Quincey1985
Annie Quincey1988
Ernest Forrest1961
Constance Forrest1968
Wednesday Addams2005

Segundos de un intervalo

PostgreSQL 17.9
SELECT EXTRACT(
		EPOCH
		FROM INTERVAL '1 day 2 hours'
	);
extract
93600.000000

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;
dowisodow
07

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;
weekiso_yearyear
5320202021

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.

Véase también

Dónde aprenderlo