当前位置: 首页 > 面试题库 >

如何存储生日和年龄,以便可以每天在PHP / MySQL中更新年龄?

卫财
2023-03-14
问题内容

我应该如何在MySQL中存储出生日期,以便可以通过Cron Job轻松地每天更新每个人的年龄?

存储“年龄”和“生日”是否有意义,以便在进行涉及“年龄”的搜索时,我不必即时计算每个“年龄”并浪费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



 类似资料:
  • 问题内容: 我对MYSQL函数有问题,我可以使用它,而且很简单。但是我不明白如何使用它来收集表字段中的差异。例如 我有一列,我想写一个查询来做类似的事情 我的意思是我要从当前日期时间到table字段的差额,每个查询结果都是差额,即用户的年龄。 问题答案: 你的意思是这样吗? (来源)

  • 问题内容: 这个问题已经在这里有了答案 : 在MySQL中获取一个人的年龄 (2个答案) 6年前关闭。 我在mysql中有一个表,它的出生日期列保存为unix时间戳(bigint)。 我想这样写查询: 和 3点是从出生日期算起年龄的函数。 我知道该函数,但是如果将出生日期另存为unix时间戳,那就不好了。 我能做些什么? 谢谢 问题答案: 从MySQL的日期和时间函数,我们可以结合,和。 假设这是

  • 问题内容: 我正在尝试使用以下格式为每个人打印其年龄: 例如:19年8个月13天。 我已经在Google上搜索了很多,并且注意到有一个特定的函数可以计算日期之间的差。 但是,该功能在中不存在,因此我继续尝试使用和一些运算符。 我的尝试: 我的问题取决于日子。我不知道如何使用此函数计算天数(“尝试除以4或30”);我以为我的逻辑不好,但我无法弄清楚,有什么想法吗? 问题答案: 与Lalit的答案非常

  • 本文向大家介绍php计算年龄精准到年月日,包括了php计算年龄精准到年月日的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php计算年龄精准到年月日的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家学习php程序设计有所帮助。

  • 问题内容: 给定YYYYMMDD格式的出生日期,如何计算以岁为单位的年龄?是否可以使用该功能? 我正在寻找比现在使用的解决方案更好的解决方案: 问题答案: 我会为了提高可读性: 免责声明: 这也存在精度问题,因此也不能完全信任。它可能会关闭几个小时,有时会关闭,也可能会在夏令时关闭(取决于时区)。 相反,如果精度非常重要,我建议为此使用库。另外,可能是最准确的,因为它不依赖于一天中的时间。

  • 问题内容: 当我想在mysql表中设置数值+1时,我使用例如: 如何设置日期+一年? 谢谢 问题答案: 您可以使用DATE_ADD:(或将ADDDATE与一起使用)