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:
centurydaydecadedowdoyepochhourisodowisoyearmicrosecondsmillenniummillisecondsminutemonthquartersecondtimezonetimezone_hourtimezone_minuteweekyear
Questi sono gli stessi dei valori validi per date_part() funzione.