century
Il secolo
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
Il primo secolo inizia al 0001-01-01 00:00:00 AD, anche se non lo sapevano all’epoca. Questa definizione si applica a tutti i paesi del calendario gregoriano. Non c’è un secolo numero 0, si va da -1 secolo a 1 secolo. Se non siete d’accordo con questo, scrivete il vostro reclamo a: Papa, Cattedrale San Pietro di Roma, Vaticano.
Le versioni di PostgreSQL precedenti alla 8.0 non seguivano la numerazione convenzionale dei secoli, ma restituivano semplicemente il campo dell’anno diviso per 100.
giorno
Per i valori di timestamp, il campo giorno (del mese) (1 – 31); per valori di intervallo, il numero di giorni
SELECT EXTRACT(DAY FROM TIMESTAMP '2001-02-16 20:38:40');Result: 16SELECT EXTRACT(DAY FROM INTERVAL '40 days 1 minute');Result: 40
decade
Il campo dell’anno diviso per 10
SELECT EXTRACT(DECADE FROM TIMESTAMP '2001-02-16 20:38:40');Result: 200
dow
Il giorno della settimana da domenica (0) a sabato (6)
SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');Result: 5
Nota che la numerazione del giorno della settimana di extract
differisce da quella della funzione to_char(..., 'D')
.
doy
Il giorno dell’anno (1 – 365/366)
SELECT EXTRACT(DOY FROM TIMESTAMP '2001-02-16 20:38:40');Result: 47
epoch
Per i valori di data e timestamp, il numero di secondi dal 1970-01-01 00:00:00 UTC (può essere negativo); per i valori di intervallo, il numero totale di secondi nell’intervallo
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
Ecco come puoi convertire un valore di epoch in una marca temporale:
SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 982384720.12 * INTERVAL '1 second';
(La funzione to_timestamp
incapsula la conversione di cui sopra.)
ora
Il campo dell’ora (0 – 23)
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');Result: 20
isodow
Il giorno della settimana da lunedì (1) a domenica (7)
SELECT EXTRACT(ISODOW FROM TIMESTAMP '2001-02-18 20:38:40');Result: 7
Questo è identico a dow tranne la domenica. Questo corrisponde alla numerazione ISO 8601 del giorno della settimana.
isoyear
L’anno di numerazione settimanale ISO 8601 in cui cade la data (non applicabile agli intervalli)
SELECT EXTRACT(ISOYEAR FROM DATE '2006-01-01');Result: 2005SELECT EXTRACT(ISOYEAR FROM DATE '2006-01-02');Result: 2006
Ogni anno di numerazione settimanale ISO 8601 inizia con il lunedì della settimana contenente il 4 gennaio, quindi all’inizio di gennaio o alla fine di dicembre l’anno ISO può essere diverso dall’anno gregoriano. Vedere il campo settimana per maggiori informazioni.
Questo campo non è disponibile nelle versioni di PostgreSQL precedenti alla 8.3.
microsecondi
Il campo secondi, incluse le parti frazionarie, moltiplicato per 1 000 000; notare che questo include i secondi interi
SELECT EXTRACT(MICROSECONDS FROM TIME '17:12:28.5');Result: 28500000
millennio
Il millennio
SELECT EXTRACT(MILLENNIUM FROM TIMESTAMP '2001-02-16 20:38:40');Result: 3
Gli anni del 1900 sono nel secondo millennio. Il terzo millennio è iniziato il 1° gennaio 2001.
Le versioni di PostgreSQL precedenti alla 8.0 non seguivano la numerazione convenzionale dei millenni, ma restituivano semplicemente il campo anno diviso per 1000.
millisecondi
Il campo secondi, incluse le parti frazionarie, moltiplicato per 1000. Si noti che questo include i secondi pieni.
SELECT EXTRACT(MILLISECONDS FROM TIME '17:12:28.5');Result: 28500
minuto
Il campo dei minuti (0 – 59)
SELECT EXTRACT(MINUTE FROM TIMESTAMP '2001-02-16 20:38:40');Result: 38
mese
Per i valori di timestamp, il numero del mese nell’anno (1 – 12); per i valori di intervallo, il numero di mesi, 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
trimestre
Il trimestre dell’anno (1 – 4) in cui si trova la data
SELECT EXTRACT(QUARTER FROM TIMESTAMP '2001-02-16 20:38:40');Result: 1
secondo
Il campo dei secondi, incluse le parti frazionarie (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
fuso orario
Lo spostamento del fuso orario da UTC, misurato in secondi. I valori positivi corrispondono ai fusi orari a est di UTC, quelli negativi ai fusi orari a ovest di UTC. (Tecnicamente, PostgreSQL usa UT1 perché i secondi bisestili non sono gestiti.)
timezone_hour
Il componente orario dell’offset del fuso orario
timezone_minute
Il componente minuto dell’offset del fuso orario
week
Il numero della settimana dell’anno con numerazione ISO 8601. Per definizione, le settimane ISO iniziano di lunedì e la prima settimana di un anno contiene il 4 gennaio di quell’anno. In altre parole, il primo giovedì di un anno è nella settimana 1 di quell’anno.
Nel sistema di numerazione settimanale ISO, è possibile che le date di inizio gennaio facciano parte della 52a o 53a settimana dell’anno precedente, e che le date di fine dicembre facciano parte della prima settimana dell’anno successivo. Per esempio, 2005-01-01 fa parte della 53a settimana dell’anno 2004, e 2006-01-01 fa parte della 52a settimana dell’anno 2005, mentre 2012-12-31 fa parte della prima settimana del 2013. Si raccomanda di usare il campo isoyear insieme a week per ottenere risultati coerenti.
SELECT EXTRACT(WEEK FROM TIMESTAMP '2001-02-16 20:38:40');Result: 7
year
Il campo year. Tieni presente che non esiste lo 0 d.C., quindi sottrarre gli anni BC dagli anni AD dovrebbe essere fatto con attenzione.
SELECT EXTRACT(YEAR FROM TIMESTAMP '2001-02-16 20:38:40');Result: 2001