I PostgreSQL, extract()
funktionen hämtar underfält som år, månad, timme eller minut, en del från ett datum-/tidsvärde.
Det motsvarar date_part()
funktion, men med en något annorlunda syntax.
Syntax
Syntaxen ser ut så här:
EXTRACT(field FROM source)
Var:
field
is är en identifierare eller sträng som väljer vilket fält som ska extraheras från källvärdet.source
är en tidsstämpel eller ett intervall .
Exempel – Tidsstämpel
Här är ett grundläggande exempel för att visa hur man hämtar ett fält från en tidsstämpel värde.
SELECT extract(hour FROM timestamp '2022-10-30 10:11:35');
Resultat:
10
Det här exemplet hämtar timfältet från en tidsstämpel värde.
Som nämnts kan det första argumentet vara en identifierare eller sträng. Detta är en av skillnaderna mellan extract()
och date_part()
. När du använder date_part()
, måste du ange en sträng för detta argument.
Här är samma exempel igen, förutom som en sträng.
SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35');
Resultat:
10
Här är ett exempel med samma tidsstämpel, men den här gången hämtar jag fältet år.
SELECT extract(year FROM timestamp '2022-10-30 10:11:35');
Resultat:
2022
Exempel – Intervall
I det här exemplet hämtar jag en datumdel från ett intervall värde.
SELECT extract(hour FROM interval '7 hours 45 minutes');
Resultat:
7
I nästa exempel returnerar funktionen korrekt antalet timmar, även om jag bara anger antalet minuter.
SELECT extract(hour FROM interval '120 minutes');
Resultat:
2
Räkna dock inte med denna teknik. Du kanske upptäcker att du inte alltid får det resultat du förväntar dig.
Till exempel:
SELECT extract(hour FROM interval '100 minutes');
Resultat:
1
Och en annan:
SELECT extract(minute FROM interval '2 hours');
Resultat:
0
Fältnamn
Det första argumentet kan vara något av följande:
century
day
decade
dow
doy
epoch
hour
isodow
isoyear
microseconds
millennium
milliseconds
minute
month
quarter
second
timezone
timezone_hour
timezone_minute
week
year
Dessa är desamma som de giltiga värdena för date_part()
funktion.