In PostgreSQL, il extract()
la funzione recupera sottocampi come l'anno, il mese, l'ora o il minuto, parte da un valore di data/ora.
È equivalente a date_part()
funzione, anche se con una sintassi leggermente diversa.
Sintassi
La sintassi è questa:
EXTRACT(field FROM source)
Dove:
field
è un identificatore o una stringa che seleziona quale campo estrarre dal valore di origine.source
è un indicatore orario o un intervallo .
Esempio – Timestamp
Ecco un esempio di base per dimostrare come recuperare un campo da un timestamp valore.
SELECT extract(hour FROM timestamp '2022-10-30 10:11:35');
Risultato:
10
Questo esempio recupera il campo dell'ora da un timestamp valore.
Come accennato, il primo argomento può essere un identificatore o una stringa. Questa è una delle differenze tra extract()
e date_part()
. Quando si utilizza date_part()
, devi fornire una stringa per questo argomento.
Ecco di nuovo lo stesso esempio, tranne che come stringa.
SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35');
Risultato:
10
Ecco un esempio con lo stesso timestamp, ma questa volta recupero il campo dell'anno.
SELECT extract(year FROM timestamp '2022-10-30 10:11:35');
Risultato:
2022
Esempio – Intervallo
In questo esempio, recupero una parte della data da un intervallo valore.
SELECT extract(hour FROM interval '7 hours 45 minutes');
Risultato:
7
Nell'esempio successivo, la funzione restituisce correttamente il numero di ore, anche se fornisco solo il numero di minuti.
SELECT extract(hour FROM interval '120 minutes');
Risultato:
2
Tuttavia, non contare su questa tecnica. Potresti scoprire che non sempre ottieni il risultato che ti aspetti.
Ad esempio:
SELECT extract(hour FROM interval '100 minutes');
Risultato:
1
E un altro:
SELECT extract(minute FROM interval '2 hours');
Risultato:
0
Nomi dei campi
Il primo argomento può essere uno dei seguenti:
century
day
decade
dow
doy
epoch
hour
isodow
isoyear
microseconds
millennium
milliseconds
minute
month
quarter
second
timezone
timezone_hour
timezone_minute
week
year
Questi sono gli stessi dei valori validi per date_part()
funzione.