century
The century
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
Det första århundradet börjar vid 0001-01-01 00:00:00:00 AD, även om de inte visste det då. Denna definition gäller för alla länder med gregoriansk kalender. Det finns inget sekelnummer 0, man går från -1 sekel till 1 sekel. Om du inte håller med om detta kan du skriva ditt klagomål till: Pope, Cathedral Saint-Peter of Roma, Vatican.
PostgreSQL-versioner före 8.0 följde inte den konventionella numreringen av århundraden, utan returnerade bara årtalsfältet dividerat med 100.
day
För tidsstämpelvärden används fältet dag (i månaden) (1 – 31) ; för intervallvärden, antalet dagar
SELECT EXTRACT(DAY FROM TIMESTAMP '2001-02-16 20:38:40');Result: 16SELECT EXTRACT(DAY FROM INTERVAL '40 days 1 minute');Result: 40
decade
Årsfältet år dividerat med 10
SELECT EXTRACT(DECADE FROM TIMESTAMP '2001-02-16 20:38:40');Result: 200
dow
Veckensdagen som söndag (0) till lördag (6)
SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');Result: 5
Bemärk att extract
s numrering av veckodagarna skiljer sig från den som används i to_char(..., 'D')
-funktionen.
doy
Årets dag (1 – 365/366)
SELECT EXTRACT(DOY FROM TIMESTAMP '2001-02-16 20:38:40');Result: 47
epok
För datum- och tidsstämpelvärden, antalet sekunder sedan 1970-01-01 00:00:00 UTC (kan vara negativt); för intervallvärden, det totala antalet sekunder i intervallet
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
Så här kan du konvertera ett epokvärde tillbaka till en tidsstämpel:
SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 982384720.12 * INTERVAL '1 second';
(Funktionen to_timestamp
kapslar in ovanstående konvertering.)
hour
Hurfältet (0 – 23)
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');Result: 20
isodow
Veckendagen som måndag (1) till söndag (7)
SELECT EXTRACT(ISODOW FROM TIMESTAMP '2001-02-18 20:38:40');Result: 7
Detta är identiskt med dow utom för söndag. Detta stämmer överens med ISO 8601-numreringen av veckodagarna.
isoyear
Det ISO 8601-veckonummeringsår som datumet infaller i (gäller inte intervall)
SELECT EXTRACT(ISOYEAR FROM DATE '2006-01-01');Result: 2005SELECT EXTRACT(ISOYEAR FROM DATE '2006-01-02');Result: 2006
Varje ISO 8601-veckonummeringsår börjar med måndagen i den vecka som innehåller den 4 januari, så i början av januari eller i slutet av december kan ISO-året vara annorlunda än det gregorianska året. Se fältet vecka för mer information.
Det här fältet är inte tillgängligt i PostgreSQL-versioner före 8.3.
mikrosekunder
Sekundfältet, inklusive bråkdelar, multiplicerat med 1 000 000; observera att detta inkluderar hela sekunder
SELECT EXTRACT(MICROSECONDS FROM TIME '17:12:28.5');Result: 28500000
millennium
Miljoner år
SELECT EXTRACT(MILLENNIUM FROM TIMESTAMP '2001-02-16 20:38:40');Result: 3
År under 1900-talet är i det andra millenniet. Det tredje årtusendet började den 1 januari 2001.
PostgreSQL-versioner före 8.0 följde inte den konventionella numreringen av årtusenden, utan returnerade bara fältet år dividerat med 1000.
millisekunder
Fältet sekunder, inklusive bråkdelar, multiplicerat med 1000. Observera att detta inkluderar hela sekunder.
SELECT EXTRACT(MILLISECONDS FROM TIME '17:12:28.5');Result: 28500
minut
Minuterfältet (0 – 59)
SELECT EXTRACT(MINUTE FROM TIMESTAMP '2001-02-16 20:38:40');Result: 38
månad
För tidsstämpelvärden, månadens nummer inom året (1 – 12) ; för intervallvärden, antalet månader, 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
kvartal
Vartalet av året (1 – 4) som datumet ligger i
SELECT EXTRACT(QUARTER FROM TIMESTAMP '2001-02-16 20:38:40');Result: 1
sekund
Sekundfältet, inklusive bråkdelar (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
tidszon
Tidszonens förskjutning från UTC, mätt i sekunder. Positiva värden motsvarar tidszoner öster om UTC, negativa värden motsvarar zoner väster om UTC. (Tekniskt sett använder PostgreSQL UT1 eftersom skottsekunder inte hanteras.)
timezone_hour
Hurkomponenten i tidszonsförskjutningen
timezone_minute
Minuterkomponenten i tidszonsförskjutningen
week
Numret på ISO 8601-veckan med veckonummerering för året. Per definition börjar ISO-veckor på måndagar och den första veckan på ett år innehåller den 4 januari det året. Med andra ord ligger den första torsdagen på ett år i vecka 1 det året.
I ISO:s veckonummereringssystem är det möjligt att datum i början av januari ingår i den 52:a eller 53:e veckan på föregående år och att datum i slutet av december ingår i den första veckan på nästa år. Exempelvis är 2005-01-01-01 en del av den 53:e veckan år 2004 och 2006-01-01-01 en del av den 52:a veckan år 2005, medan 2012-12-31 är en del av den första veckan år 2013. Det rekommenderas att använda fältet isoyear tillsammans med week för att få konsekventa resultat.
SELECT EXTRACT(WEEK FROM TIMESTAMP '2001-02-16 20:38:40');Result: 7
year
Fältet year. Tänk på att det inte finns något 0 AD, så subtraktion av BC-år från AD-år bör göras med försiktighet.
SELECT EXTRACT(YEAR FROM TIMESTAMP '2001-02-16 20:38:40');Result: 2001