In PostgreSQL puoi usare extract()
funzione per ottenere il giorno da una data.
Puoi anche usare date_part()
fare la stessa cosa.
Quando si estrae il giorno da una data, è necessario specificare il senso della parola "giorno" che si intende. Ad esempio, "giorno della settimana", "giorno del mese", "giorno dell'anno", ecc.
Esempio 1:giorno della settimana
Ecco un esempio di utilizzo di extract()
funzione per estrarre il giorno della settimana da una data.
Usando dow
restituisce il giorno della settimana da domenica (0) a sabato (6).
SELECT extract(dow from date '2020-12-27') AS "Day of week", to_char(date '2020-12-27', 'Day') AS "Day Name";
Risultato:
Day of week | Day Name -------------+----------- 0 | Sunday
In questo esempio ho anche restituito il nome del giorno, in modo che non ci sia confusione su quale giorno viene effettivamente restituito.
Userò la stessa data per gli esempi rimanenti, quindi non è necessario che stampi il nome del giorno in quegli esempi.
Esempio 2:giorno della settimana ISO
Usando isodow
restituisce il giorno della settimana da lunedì (1) a domenica (7).
SELECT extract( isodow from date '2020-12-27' ) AS "ISO Day of week";
Risultato:
ISO Day of week ----------------- 7
Il motivo per cui ho usato Sunday in questi esempi è perché evidenzia la differenza tra isodow
e dow
.
Esempio 3:giorno del mese
Quando si utilizza il timestamp o data valori, day
restituisce il giorno del mese (1 – 31).
SELECT extract( day from date '2020-12-27' ) AS "Day of month";
Risultato:
Day of month -------------- 27
Quando si utilizza un intervallo valore, il day
campo restituisce il numero di giorni restituiti.
SELECT extract( day from interval '32 weeks' ) AS "Number of days";
Risultato:
Number of days ---------------- 224
Esempio 4:giorno dell'anno
Usando doy
restituisce il giorno dell'anno (1 – 365/366).
SELECT extract( doy from date '2020-12-27' ) AS "Day of year";
Risultato:
Day of year ------------- 362
Esempio 5:la funzione date_part()
Il date_part()
può essere utilizzata al posto di extract()
funzione. Ecco un esempio.
SELECT date_part( 'doy', timestamp '2020-12-27' ) AS "Day of year";
Risultato:
Day of year ------------- 362