W PostgreSQL extract() funkcja pobiera podpola, takie jak rok, miesiąc, godzina lub minuta, część z wartości daty/czasu.
Jest odpowiednikiem date_part() funkcja, chociaż z nieco inną składnią.
Składnia
Składnia wygląda tak:
EXTRACT(field FROM source) Gdzie:
fieldis jest identyfikatorem lub ciągiem znaków, który wybiera pole do wyodrębnienia z wartości źródłowej.sourceto sygnatura czasowa lub przedział .
Przykład – znacznik czasu
Oto podstawowy przykład pokazujący, jak pobrać pole z sygnatury czasowej wartość.
SELECT extract(hour FROM timestamp '2022-10-30 10:11:35'); Wynik:
10
Ten przykład pobiera pole godziny z sygnatury czasowej wartość.
Jak wspomniano, pierwszym argumentem może być identyfikator lub ciąg znaków. To jedna z różnic między extract() i date_part() . Podczas korzystania z date_part() , musisz podać ciąg dla tego argumentu.
Oto znowu ten sam przykład, z wyjątkiem ciągu.
SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35'); Wynik:
10
Oto przykład z tym samym znacznikiem czasu, ale tym razem pobieram pole roku.
SELECT extract(year FROM timestamp '2022-10-30 10:11:35'); Wynik:
2022
Przykład — interwał
W tym przykładzie pobieram część daty z przedziału wartość.
SELECT extract(hour FROM interval '7 hours 45 minutes'); Wynik:
7
W następnym przykładzie funkcja poprawnie zwraca liczbę godzin, mimo że podaję tylko liczbę minut.
SELECT extract(hour FROM interval '120 minutes'); Wynik:
2
Nie licz jednak na tę technikę. Może się okazać, że nie zawsze uzyskujesz oczekiwane rezultaty.
Na przykład:
SELECT extract(hour FROM interval '100 minutes'); Wynik:
1
I jeszcze:
SELECT extract(minute FROM interval '2 hours'); Wynik:
0
Nazwy pól
Pierwszym argumentem może być dowolny z następujących:
centurydaydecadedowdoyepochhourisodowisoyearmicrosecondsmillenniummillisecondsminutemonthquartersecondtimezonetimezone_hourtimezone_minuteweekyear
Są takie same jak prawidłowe wartości dla date_part() funkcja.