PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

3 funzioni che ottengono il giorno, il mese e l'anno da una data in PostgreSQL

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