In PostgreSQL, het extract()
functie haalt subvelden op, zoals het jaar, de maand, het uur of de minuut, deels uit een datum/tijd-waarde.
Het is gelijk aan de date_part()
functie, hoewel met een iets andere syntaxis.
Syntaxis
De syntaxis gaat als volgt:
EXTRACT(field FROM source)
Waar:
field
is is een identificatie of tekenreeks die selecteert welk veld uit de bronwaarde moet worden geëxtraheerd.source
is een tijdstempel of een interval .
Voorbeeld – Tijdstempel
Hier is een eenvoudig voorbeeld om te demonstreren hoe u een veld kunt ophalen uit een tijdstempel waarde.
SELECT extract(hour FROM timestamp '2022-10-30 10:11:35');
Resultaat:
10
In dit voorbeeld wordt het uurveld opgehaald uit een tijdstempel waarde.
Zoals vermeld, kan het eerste argument een identifier of string zijn. Dit is een van de verschillen tussen extract()
en date_part()
. Bij gebruik van date_part()
, moet u een tekenreeks voor dit argument opgeven.
Hier is hetzelfde voorbeeld opnieuw, behalve als een string.
SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35');
Resultaat:
10
Hier is een voorbeeld met dezelfde tijdstempel, maar deze keer haal ik het jaarveld op.
SELECT extract(year FROM timestamp '2022-10-30 10:11:35');
Resultaat:
2022
Voorbeeld – Interval
In dit voorbeeld haal ik een datumgedeelte op uit een interval waarde.
SELECT extract(hour FROM interval '7 hours 45 minutes');
Resultaat:
7
In het volgende voorbeeld retourneert de functie correct het aantal uren, ook al geef ik alleen het aantal minuten op.
SELECT extract(hour FROM interval '120 minutes');
Resultaat:
2
Reken echter niet op deze techniek. Het kan zijn dat u niet altijd het resultaat krijgt dat u verwacht.
Bijvoorbeeld:
SELECT extract(hour FROM interval '100 minutes');
Resultaat:
1
En nog een:
SELECT extract(minute FROM interval '2 hours');
Resultaat:
0
Veldnamen
Het eerste argument kan een van de volgende zijn:
century
day
decade
dow
doy
epoch
hour
isodow
isoyear
microseconds
millennium
milliseconds
minute
month
quarter
second
timezone
timezone_hour
timezone_minute
week
year
Dit zijn dezelfde als de geldige waarden voor date_part()
functie.