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:
fieldis ä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:
centurydaydecadedowdoyepochhourisodowisoyearmicrosecondsmillenniummillisecondsminutemonthquartersecondtimezonetimezone_hourtimezone_minuteweekyear
Dessa är desamma som de giltiga värdena för date_part() funktion.