PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como Extract() funciona no PostgreSQL


No PostgreSQL, o extract() A função recupera subcampos como ano, mês, hora ou minuto, parte de um valor de data/hora.

É equivalente ao date_part() função, embora com uma sintaxe ligeiramente diferente.

Sintaxe


A sintaxe fica assim:
EXTRACT(field FROM source)

Onde:
  • field is é um identificador ou string que seleciona qual campo extrair do valor de origem.
  • source é um carimbo de data e hora ou um intervalo .

Exemplo – carimbo de data/hora


Aqui está um exemplo básico para demonstrar como recuperar um campo de um timestamp valor.
SELECT extract(hour FROM timestamp '2022-10-30 10:11:35');

Resultado:
10

Este exemplo recupera o campo de hora de um timestamp valor.

Como mencionado, o primeiro argumento pode ser um identificador ou string. Esta é uma das diferenças entre extract() e date_part() . Ao usar date_part() , você deve fornecer uma string para este argumento.

Aqui está o mesmo exemplo novamente, exceto como uma string.
SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35');

Resultado:
10

Aqui está um exemplo com o mesmo timestamp, mas desta vez eu recupero o campo year.
SELECT extract(year FROM timestamp '2022-10-30 10:11:35');

Resultado:
2022

Exemplo - Intervalo


Neste exemplo, recupero uma parte de data de um intervalo valor.
SELECT extract(hour FROM interval '7 hours 45 minutes');

Resultado:
7

No próximo exemplo, a função retorna corretamente o número de horas, embora eu forneça apenas o número de minutos.
SELECT extract(hour FROM interval '120 minutes');

Resultado:
2

No entanto, não conte com esta técnica. Você pode descobrir que nem sempre obtém o resultado esperado.

Por exemplo:
SELECT extract(hour FROM interval '100 minutes');

Resultado:
1

E outro:
SELECT extract(minute FROM interval '2 hours');

Resultado:
0

Nomes de campo


O primeiro argumento pode ser qualquer um dos seguintes:
  • century
  • day
  • decade
  • dow
  • doy
  • epoch
  • hour
  • isodow
  • isoyear
  • microseconds
  • millennium
  • milliseconds
  • minute
  • month
  • quarter
  • second
  • timezone
  • timezone_hour
  • timezone_minute
  • week
  • year

Estes são os mesmos valores válidos para date_part() função.