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

Calcola l'età in anni in PostgreSQL

Postgres ha age() funzione che restituisce l'età in anni, mesi e giorni in base a due date.

Funziona bene a meno che tu non voglia solo restituire l'età in anni.

Ad esempio, vuoi semplicemente restituire l'età di una persona in base al suo compleanno. Vuoi qualcosa come 32 invece di 32 anni 4 mesi 67 giorni , che è ciò che age() è probabile che ritorni.

Fortunatamente c'è un modo semplice per farlo in PostgreSQL.

Se vuoi solo l'età in anni, puoi usare uno dei due extract() o date_part() per ottenere l'anno da age() valore di ritorno della funzione.

Ecco un esempio che utilizza date_part() funzione:

SELECT date_part('year', age(timestamp '2003-12-27'));

Risultato:

16.0

Ecco come appare quando lo eseguo in Azure Data Studio.

Quando lo eseguo in psql , ho questo:

16

Entrambi extract() e date_part() restituiscono i risultati utilizzando il tipo di dati a doppia precisione.

Puoi convertirlo in un numero intero (o in un altro tipo di dati), se necessario, aggiungendolo con ::int .

SELECT date_part('year', age(timestamp '2003-12-27'))::int;

Risultato:

16