PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Calcular a idade em anos no PostgreSQL


Postgres tem a age() função que retorna a idade em anos, meses e dias com base em duas datas.

Isso funciona bem, a menos que você queira apenas retornar a idade em anos.

Por exemplo, você simplesmente deseja retornar a idade de uma pessoa com base em seu aniversário. Você quer algo como 32 em vez de 32 anos 4 meses 67 dias , que é o que age() é provável que volte.

Felizmente, existe uma maneira fácil de fazer isso no PostgreSQL.

Se você quiser apenas a idade em anos, você pode usar extract() ou date_part() para obter o ano de age() valor de retorno da função.

Aqui está um exemplo que usa o date_part() função:
SELECT date_part('year', age(timestamp '2003-12-27'));

Resultado:
16.0

É assim que aparece quando o executo no Azure Data Studio.

Quando eu executo no psql , Eu entendi isso:
16

Ambos extract() e date_part() retornam seus resultados usando o tipo de dados de precisão dupla.

Você pode converter isso em um inteiro (ou outro tipo de dados), se necessário, anexando-o com ::int .
SELECT date_part('year', age(timestamp '2003-12-27'))::int;

Resultado:
16