century
Wiek
SELECT EXTRACT(CENTURY FROM TIMESTAMP '2000-12-16 12:21:13');Result: 20SELECT EXTRACT(CENTURY FROM TIMESTAMP '2001-02-16 20:38:40');Result: 21
Pierwszy wiek zaczyna się od 0001-01-01 00:00:00 AD, chociaż wtedy jeszcze o tym nie wiedziano. Ta definicja odnosi się do wszystkich krajów z kalendarzem gregoriańskim. Nie ma wieku numer 0, idziesz od -1 wieku do 1 wieku. Jeśli się z tym nie zgadzasz, napisz swoją skargę do: Papież, Katedra Saint-Peter of Roma, Watykan.
Wydania PostgreSQL przed 8.0 nie stosowały konwencjonalnej numeracji wieków, lecz po prostu zwracały pole roku podzielone przez 100.
dzień
Dla wartości timestamp, pole dzień (miesiąca) (1 – 31) ; dla wartości interwałowych, liczba dni
SELECT EXTRACT(DAY FROM TIMESTAMP '2001-02-16 20:38:40');Result: 16SELECT EXTRACT(DAY FROM INTERVAL '40 days 1 minute');Result: 40
dekada
Pole roku podzielone przez 10
SELECT EXTRACT(DECADE FROM TIMESTAMP '2001-02-16 20:38:40');Result: 200
dow
Dzień tygodnia jako niedziela (0) do soboty (6)
SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');Result: 5
Zauważ, że numeracja dni tygodnia w funkcji extract
różni się od numeracji w funkcji to_char(..., 'D')
.
doy
Dzień roku (1 – 365/366)
SELECT EXTRACT(DOY FROM TIMESTAMP '2001-02-16 20:38:40');Result: 47
epoch
Dla wartości dat i znaczników czasu, liczba sekund od 1970-01-01 00:00:00 UTC (może być ujemna); dla wartości interwału, całkowita liczba sekund w interwale
SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40.12-08');Result: 982384720.12SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours');Result: 442800
Oto jak można przekonwertować wartość epoki z powrotem na znacznik czasu:
SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 982384720.12 * INTERVAL '1 second';
(Funkcja to_timestamp
obudowuje powyższą konwersję.)
hour
Pole godziny (0 – 23)
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');Result: 20
isodow
Dzień tygodnia jako poniedziałek (1) do niedzieli (7)
SELECT EXTRACT(ISODOW FROM TIMESTAMP '2001-02-18 20:38:40');Result: 7
To jest identyczne z dow z wyjątkiem niedzieli. Odpowiada to numeracji dni tygodnia ISO 8601.
isoyear
Rok numeracji tygodniowej ISO 8601, w którym przypada data (nie dotyczy interwałów)
SELECT EXTRACT(ISOYEAR FROM DATE '2006-01-01');Result: 2005SELECT EXTRACT(ISOYEAR FROM DATE '2006-01-02');Result: 2006
Każdy rok numeracji tygodniowej ISO 8601 zaczyna się od poniedziałku tygodnia zawierającego 4 stycznia, więc na początku stycznia lub pod koniec grudnia rok ISO może być inny niż rok gregoriański. Zobacz pole tygodnia aby uzyskać więcej informacji.
To pole nie jest dostępne w PostgreSQL w wersji wcześniejszej niż 8.3.
mikrosekundy
Sekundy, łącznie z częściami ułamkowymi, pomnożone przez 1 000 000; zawiera pełne sekundy
SELECT EXTRACT(MICROSECONDS FROM TIME '17:12:28.5');Result: 28500000
tysiąclecie
Tysiąclecie
SELECT EXTRACT(MILLENNIUM FROM TIMESTAMP '2001-02-16 20:38:40');Result: 3
Lata 1900 należą do drugiego tysiąclecia. Trzecie tysiąclecie rozpoczęło się 1 stycznia 2001 roku.
Wydania PostgreSQL przed 8.0 nie stosowały konwencjonalnej numeracji tysiącleci, lecz zwracały pole roku podzielone przez 1000.
milisekundy
Pole sekund, w tym części ułamkowe, pomnożone przez 1000. Zauważ, że obejmuje to pełne sekundy.
SELECT EXTRACT(MILLISECONDS FROM TIME '17:12:28.5');Result: 28500
minuta
Pole minut (0 – 59)
SELECT EXTRACT(MINUTE FROM TIMESTAMP '2001-02-16 20:38:40');Result: 38
miesiąc
Dla wartości znacznika czasu, numer miesiąca w roku (1 – 12) ; dla wartości interwałowych, liczba miesięcy, modulo 12 (0 – 11)
SELECT EXTRACT(MONTH FROM TIMESTAMP '2001-02-16 20:38:40');Result: 2SELECT EXTRACT(MONTH FROM INTERVAL '2 years 3 months');Result: 3SELECT EXTRACT(MONTH FROM INTERVAL '2 years 13 months');Result: 1
quarter
Kwartał roku (1 – 4), w którym znajduje się data
SELECT EXTRACT(QUARTER FROM TIMESTAMP '2001-02-16 20:38:40');Result: 1
second
Pole sekund, w tym części ułamkowe (0 – 59)
SELECT EXTRACT(SECOND FROM TIMESTAMP '2001-02-16 20:38:40');Result: 40SELECT EXTRACT(SECOND FROM TIME '17:12:28.5');Result: 28.5
timezone
Odchylenie strefy czasowej od UTC, mierzone w sekundach. Wartości dodatnie odpowiadają strefom czasowym na wschód od UTC, wartości ujemne – strefom na zachód od UTC. (Technicznie PostgreSQL używa UT1, ponieważ sekundy przestępne nie są obsługiwane.)
timezone_hour
Komponent godzinowy przesunięcia strefy czasowej
timezone_minute
Komponent minutowy przesunięcia strefy czasowej
week
Numer tygodnia ISO 8601. Z definicji, tygodnie ISO zaczynają się w poniedziałki i pierwszy tydzień roku zawiera 4 stycznia tego roku. Innymi słowy, pierwszy czwartek roku jest w tygodniu 1 tego roku.
W systemie numeracji tygodniowej ISO możliwe jest, aby daty z początku stycznia były częścią 52. lub 53. tygodnia poprzedniego roku, a daty z końca grudnia były częścią pierwszego tygodnia następnego roku. Na przykład, 2005-01-01 jest częścią 53 tygodnia roku 2004, a 2006-01-01 jest częścią 52 tygodnia roku 2005, podczas gdy 2012-12-31 jest częścią pierwszego tygodnia roku 2013. Zalecane jest używanie pola isoyear razem z tygodniem, aby uzyskać spójne wyniki.
SELECT EXTRACT(WEEK FROM TIMESTAMP '2001-02-16 20:38:40');Result: 7
year
Pole roku. Należy pamiętać, że nie ma 0 AD, więc odejmowanie lat BC od lat AD powinno być wykonywane z ostrożnością.
SELECT EXTRACT(YEAR FROM TIMESTAMP '2001-02-16 20:38:40');Result: 2001