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:
field
is jest identyfikatorem lub ciągiem znaków, który wybiera pole do wyodrębnienia z wartości źródłowej.source
to 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:
century
day
decade
dow
doy
epoch
hour
isodow
isoyear
microseconds
millennium
milliseconds
minute
month
quarter
second
timezone
timezone_hour
timezone_minute
week
year
Są takie same jak prawidłowe wartości dla date_part()
funkcja.