I PostgreSQL er extract() funktionen henter underfelter såsom år, måned, time eller minut, en del af en dato/tidsværdi.
Det svarer til date_part() funktion, dog med en lidt anden syntaks.
Syntaks
Syntaksen ser sådan ud:
EXTRACT(field FROM source) Hvor:
fieldis er en identifikator eller streng, der vælger, hvilket felt der skal udtrækkes fra kildeværdien.sourceer et tidsstempel eller et interval .
Eksempel – Tidsstempel
Her er et grundlæggende eksempel til at demonstrere, hvordan man henter et felt fra et tidsstempel værdi.
SELECT extract(hour FROM timestamp '2022-10-30 10:11:35'); Resultat:
10
Dette eksempel henter timefeltet fra et tidsstempel værdi.
Som nævnt kan det første argument være en identifikator eller streng. Dette er en af forskellene mellem extract() og date_part() . Når du bruger date_part() , skal du angive en streng for dette argument.
Her er det samme eksempel igen, undtagen som en streng.
SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35'); Resultat:
10
Her er et eksempel med samme tidsstempel, men denne gang henter jeg år-feltet.
SELECT extract(year FROM timestamp '2022-10-30 10:11:35'); Resultat:
2022
Eksempel – Interval
I dette eksempel henter jeg en datodel fra et interval værdi.
SELECT extract(hour FROM interval '7 hours 45 minutes'); Resultat:
7
I det næste eksempel returnerer funktionen korrekt antallet af timer, selvom jeg kun angiver antallet af minutter.
SELECT extract(hour FROM interval '120 minutes'); Resultat:
2
Regn dog ikke med denne teknik. Du vil måske opdage, at du ikke altid får det resultat, du forventer.
For eksempel:
SELECT extract(hour FROM interval '100 minutes'); Resultat:
1
Og en anden:
SELECT extract(minute FROM interval '2 hours'); Resultat:
0
Feltnavne
Det første argument kan være et af følgende:
centurydaydecadedowdoyepochhourisodowisoyearmicrosecondsmillenniummillisecondsminutemonthquartersecondtimezonetimezone_hourtimezone_minuteweekyear
Disse er de samme som de gyldige værdier for date_part() funktion.