在 MySQL (InnoDB) 中计算年龄

新手上路,请多包涵

如果我有一个人的出生日期以 dd-mm-yyyy 形式存储在表格中,然后从当前日期中减去它,那么返回的日期格式是什么?

如何使用此返回的格式来计算某人的年龄?

原文由 user559142 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 590
2 个回答

如果值存储为 DATETIME 数据类型:

 SELECT YEAR(CURRENT_TIMESTAMP) - YEAR(dob) - (RIGHT(CURRENT_TIMESTAMP, 5) < RIGHT(dob, 5)) as age
  FROM YOUR_TABLE

考虑闰年时不太精确:

 SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t

原文由 OMG Ponies 发布,翻译遵循 CC BY-SA 3.0 许可协议

有两种简单的方法可以做到这一点:

  1. ”` select(“users.birthdate”, DB::raw(“FLOOR(DATEDIFF(CURRENT_DATE, STR_TO_DATE(users.birthdate, ‘%Y-%m-%d’))/365) AS age_way_one”),

2. ```
     select("users.birthdate",DB::raw("(YEAR(CURDATE())-YEAR(users.birthdate)) AS age_way_two"))

原文由 Aouidane Med Amine 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题