PostgreSQL ci fornisce diversi modi per ottenere il giorno, il mese e l'anno da una data.
Tre funzioni che vengono immediatamente in mente sono; DATE_PART() , EXTRACT() e TO_CHAR() .
EXTRACT()
Il EXTRACT() la funzione recupera i sottocampi come l'anno, il mese, l'ora o il minuto, parte da un valore di data/ora.
Esempio:
SELECT EXTRACT(YEAR FROM date '2035-10-30'); Risultato:
2035
Possiamo restituire parti di date diverse in campi separati effettuando tre chiamate separate a questa funzione:
SELECT
EXTRACT(DAY FROM date '2035-10-30') AS "Day",
EXTRACT(DOW FROM date '2035-10-30') AS "DOW",
EXTRACT(DOY FROM date '2035-10-30') AS "DOY",
EXTRACT(MONTH FROM date '2035-10-30') AS "Month",
EXTRACT(YEAR FROM date '2035-10-30') AS "Year"; Risultato:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
Qui ho restituito il giorno del mese, il giorno della settimana, il giorno dell'anno, il mese e l'anno dalla data.
Vedi come funziona Extract() in PostgreSQL per ulteriori esempi e un elenco di nomi di campo che possono essere restituiti da questa funzione.
DATE_PART()
Il DATE_PART() la funzione è l'equivalente di EXTRACT() , ma con una sintassi leggermente diversa.
SELECT
DATE_PART('DAY', date '2035-10-30') AS "Day",
DATE_PART('DOW', date '2035-10-30') AS "DOW",
DATE_PART('DOY', date '2035-10-30') AS "DOY",
DATE_PART('MONTH', date '2035-10-30') AS "Month",
DATE_PART('YEAR', date '2035-10-30') AS "Year"; Risultato:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
Questa funzione richiede che il primo argomento sia fornito come stringa e una virgola separi i due argomenti invece di FROM parola chiave.
TO_CHAR()
Il TO_CHAR() funzione è più flessibile, in quanto può essere utilizzata per fornire una più ampia varietà di output. Ad esempio, possiamo utilizzare questa funzione per restituire il giorno, il mese e l'anno in un unico campo:
SELECT TO_CHAR(date '2045-12-02', 'Day, DDth Month YYYY'); Risultato:
Saturday , 02nd December 2045
Possiamo usare il fm modificatore del modello per eliminare qualsiasi riempimento che può essere applicato:
SELECT TO_CHAR(date '2165-04-01', 'fmDay, fmDDth fmMonth YYYY'); Risultato:
Monday, 1st April 2165
Nota anche che il th il modificatore di modello è abbastanza intelligente da sapere se st , nd , rd o th dovrebbe essere aggiunto.
Ecco un esempio che utilizza varie chiamate a TO_CHAR() per produrre varie parti della data in campi separati:
SELECT
TO_CHAR(date '2165-04-01', 'fmDay') AS "Day",
TO_CHAR(date '2165-04-01', 'fmDD') AS "DD",
TO_CHAR(date '2165-04-01', 'fmMonth') AS "Month",
TO_CHAR(date '2165-04-01', 'YYYY') AS "YYYY"; Risultato:
Day | DD | Month | YYYY --------+----+-------+------ Monday | 1 | April | 2165