PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Calculer l'âge en années dans PostgreSQL

Postgres a le age() fonction qui renvoie l'âge en années, mois et jours en fonction de deux dates.

Cela fonctionne bien, sauf si vous souhaitez uniquement renvoyer l'âge en années.

Par exemple, vous souhaitez simplement renvoyer l'âge d'une personne en fonction de sa date de naissance. Vous voulez quelque chose comme 32 au lieu de 32 ans 4 mois 67 jours , qui est ce que age() est susceptible de revenir.

Heureusement, il existe un moyen simple de le faire dans PostgreSQL.

Si vous ne voulez que l'âge en années, vous pouvez utiliser soit extract() ou date_part() pour obtenir l'année à partir de age() valeur de retour de la fonction.

Voici un exemple qui utilise le date_part() fonction :

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

Résultat :

16.0

C'est ainsi qu'il apparaît lorsque je l'exécute dans Azure Data Studio.

Quand je l'exécute en psql , j'obtiens ceci :

16

Les deux extract() et date_part() renvoient leurs résultats en utilisant le type de données double précision.

Vous pouvez le convertir en entier (ou autre type de données) si nécessaire, en l'ajoutant avec ::int .

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

Résultat :

16