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:
field
is er en identifikator eller streng, der vælger, hvilket felt der skal udtrækkes fra kildeværdien.source
er 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:
century
day
decade
dow
doy
epoch
hour
isodow
isoyear
microseconds
millennium
milliseconds
minute
month
quarter
second
timezone
timezone_hour
timezone_minute
week
year
Disse er de samme som de gyldige værdier for date_part()
funktion.