如何存储Birthdate和Age,以便每天可以在PHP / MySQL中更新Age?

我应该如何在MySQL中存储Birthdate,以便我可以通过Cron作业轻松地每天更新每个人的年龄?

存储Age和Birthdate是否有意义,以便在涉及Age的搜索时,我不必动态计算每个Age并浪费CPU资源?

如果是这样,我应该如何1)存储出生日期,2)每天计算年龄?

我可以想象每日cron脚本首先过滤掉其出生日期不是当月的用户,然后过滤掉其出生日不是当天的用户,然后将剩下的每个用户的年龄加1.

这有意义吗?如果是这样,我该怎么做?有没有更好的方法来做所有这些?

最佳答案
简单的答案是不要;从不存储人的年龄.它每年都会为每个人而变化,但正如您所说,您必须每天检查每个人是否正确.

仅存储出生日期,然后从数据库中选择时计算年龄.它只是今天 – 出生日期,所以几乎不需要任何CPU.

编辑:

为了扩展我在ManseUK’s answer的评论,还有失败的可能性.如果您的服务器/数据库关闭会发生什么?或者您的更新无法在指定时间运行?或者有人出现并在该日期运行更新后手动运行它?或者有人关闭你的日程安排?如果您从数据库中选择Age来计算Age,则不存在这种情况发生的危险.

要选择年龄介于25到30年之间并假设DATE列dateofbirth,您的查询将类似于:

select *
  from users
 where dateofbirth between date_add( curdate(), interval -30 year )
                       and date_add( curdate(), interval -25 year )

确保用户在dateofbirth上编入索引.

转载注明原文:如何存储Birthdate和Age,以便每天可以在PHP / MySQL中更新Age? - 代码日志