如何存储生日和年龄,以便可以每天在PHP / MySQL中更新年龄?
存储“年龄”和“生日”是否有意义,以便在进行涉及“年龄”的搜索时,我不必即时计算每个“年龄”并浪费CPU资源?
如果是这样,我应该如何1)存储生日,以及2)每天计算年龄?
我可以想象每天的cron脚本会首先过滤出其生日不是当前月份的用户,然后过滤出其生日不是当前日期的用户,然后将每个剩余用户的年龄增加一个。
这有意义吗?如果是这样,我该怎么做?有没有更好的方法来完成所有这些工作?
回答:
简单的答案是:不要。永远不要存储一个人的年龄。它每年针对每个人而变化,但是,正如您所说,您必须每天检查每个人的正确性。
仅存储出生日期,然后从数据库中选择时计算年龄。只有today - date of birth
这样,几乎不需要CPU。
编辑:
为了进一步说明我在ManseUK回答中的评论,还存在失败的可能性。如果您的服务器/数据库宕机了怎么办?还是您的更新无法在指定的时间运行?还是有人在该日期已经运行更新后手动运行它?还是有人关闭了您的调度程序?如果您Age
从数据库中选择进行计算,则不会发生这种情况。
要选择年龄在25到30岁之间的地方并假设一个DATE列,dateofbirth
您的查询将类似于:
select * from users
where dateofbirth between date_add( curdate(), interval -30 year )
and date_add( curdate(), interval -25 year )
确保users
在上建立索引dateofbirth
。
以上是 如何存储生日和年龄,以便可以每天在PHP / MySQL中更新年龄? 的全部内容, 来源链接: utcz.com/qa/429920.html