A necessidade de cálculo com datas em programação é algo muito comum e recorrente, abordarei este tópico como é possível calcular a idade através do MySQL.
Antes, reforço recomendação de não armazenar no banco de dados registros calculados, como é o caso da idade, afinal isto muda e você pode obter o resultado rapidamente, como veremos.
Para calcularmos a idade no MySQL vamos utilizar a função timestampdiff, através dela é possível se obter resultados em diversos formatos, dentre eles:
- Anos
- Dias
- Semanas
- Meses
- Trimestres
- Hora
- Minuto
- Segundo
- Microsegundo.
Um ganho com o uso da função é que não é necessário se preocupar com os anos bissextos, pois ela calcula com precisão a diferença.
A função possui os seguintes parâmetros de entrada:
- Tipo
- O primeiro parâmetro, aqui você irá especificar qual informação você quer que a função retorne, como apontei acima são vários os tipos, mas para este post, utilizaremos o valor YEAR.
- O primeiro parâmetro, aqui você irá especificar qual informação você quer que a função retorne, como apontei acima são vários os tipos, mas para este post, utilizaremos o valor YEAR.
- Data 1
- Aqui você irá passar a data de nascimento da pessoa.
- Aqui você irá passar a data de nascimento da pessoa.
- Data 2
- Aqui você poderá colocar a data a ser comparada, para saber qual a idade naquela ocasião, você também pode utilizar-se a função now().
Os parâmetros fornecidos não necessitam ser do mesmo formto, ou seja, posso passar uma data simples, apenas com AAAA-MM-DD, ou uma data completa, com hora, minuto e segundo (AAAA-MM-DD HH:MM:SS), o que vai acontecer é, o MySQL irá entender que a data pura terá o horário fixado em 00:00.
Vamos para a prática, calculando a idade no MySQL:
Select TIMESTAMPDIFF(YEAR, '1987-03-01 00:00',NOW());
O resultado quando executo esse comando hoje (01/2021) foi:
TIMESTAMPDIFF(year, '1987-03-01 00:00',now()) --------------------------------------------------------------------- 33
Como citei acima, poderia ter passado a data simples, que o resultado seria o mesmo.
Agora digamos que eu queria saber com quantos anos eu terei em 2050, o select fica:
Select TIMESTAMPDIFF(YEAR, '1987-03-01 00:00','2050-03-01');
TIMESTAMPDIFF(year, '1987-03-01 00:00','2050-03-01')) --------------------------------------------------------------------- 63
Podemos fazer uso da função TIMESTAMPDIFF em diversos momentos, como se diz, o céu é o limite.
Veja também como é possível identificar os aniversariantes do mês em MySQL.

Muito obrigado, me ajudou muito tava precisando dessa explicação!!