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.