sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo funciona Extract() en PostgreSQL

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.