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