En PostgreSQL, el extract()
La función recupera subcampos como el año, mes, hora o minuto, parte de un valor de fecha/hora.
Es equivalente a date_part()
función, aunque con una sintaxis ligeramente diferente.
Sintaxis
La sintaxis es así:
EXTRACT(field FROM source)
Dónde:
field
Este es un identificador o cadena que selecciona qué campo extraer del valor de origen.source
es una marca de tiempo o un intervalo .
Ejemplo:marca de tiempo
Aquí hay un ejemplo básico para demostrar cómo recuperar un campo de una marca de tiempo valor.
SELECT extract(hour FROM timestamp '2022-10-30 10:11:35');
Resultado:
10
Este ejemplo recupera el campo de hora de una marca de tiempo valor.
Como se mencionó, el primer argumento puede ser un identificador o una cadena. Esta es una de las diferencias entre extract()
y date_part()
. Al usar date_part()
, debe proporcionar una cadena para este argumento.
Aquí está el mismo ejemplo otra vez, excepto como una cadena.
SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35');
Resultado:
10
Aquí hay un ejemplo con la misma marca de tiempo, pero esta vez recupero el campo del año.
SELECT extract(year FROM timestamp '2022-10-30 10:11:35');
Resultado:
2022
Ejemplo:Intervalo
En este ejemplo, recupero una parte de fecha de un intervalo valor.
SELECT extract(hour FROM interval '7 hours 45 minutes');
Resultado:
7
En el siguiente ejemplo, la función devuelve correctamente la cantidad de horas, aunque solo proporcione la cantidad de minutos.
SELECT extract(hour FROM interval '120 minutes');
Resultado:
2
Sin embargo, no cuentes con esta técnica. Es posible que descubras que no siempre obtienes el resultado que esperas.
Por ejemplo:
SELECT extract(hour FROM interval '100 minutes');
Resultado:
1
Y otro:
SELECT extract(minute FROM interval '2 hours');
Resultado:
0
Nombres de campo
El primer argumento puede ser cualquiera de los siguientes:
century
day
decade
dow
doy
epoch
hour
isodow
isoyear
microseconds
millennium
milliseconds
minute
month
quarter
second
timezone
timezone_hour
timezone_minute
week
year
Estos son los mismos que los valores válidos para date_part()
función.