Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como armazenar data de nascimento e idade para que a idade possa ser atualizada diariamente em PHP/MySQL?


A resposta simples é não; nunca armazene a idade de uma pessoa. Ele muda para cada pessoa anualmente, mas, como você diz, você deve verificar diariamente se está correto para cada pessoa.

Armazene apenas a data de nascimento e, em seguida, calcule a idade ao selecionar no banco de dados. É apenas today - date of birth então não leva quase nenhuma CPU.

EDITAR:

Para expandir meu comentário em resposta do ManseUK há também a possibilidade de falha. O que acontece se o seu servidor/banco de dados estiver inativo? Ou sua atualização não é executada no horário especificado? Ou alguém vem e executa manualmente depois que a atualização já foi executada para essa data? Ou alguém desliga seu agendador? Não há perigo de isso acontecer se você calcular Age conforme você seleciona no banco de dados.

Para selecionar onde a idade está entre 25 e 30 anos e assumindo uma coluna DATE dateofbirth sua consulta seria algo como:
select *
  from users
 where dateofbirth between date_add( curdate(), interval -30 year )
                       and date_add( curdate(), interval -25 year )

Garanta que os users está indexado em dateofbirth .