【发布时间】:2021-07-01 00:41:30
【问题描述】:
我正在尝试计算一个人在数据库中的年龄。
让我们假设有这个简单的表:
student(id, birth_date);
其中 id 是主键(确实该表更复杂,但我已对其进行了简化)。
我想知道一个人有多少岁:
select id, datediff(curdate(),birth_date)
from student
但它以天为单位返回结果,而不是以年为单位。我可以将其除以 365:
select id, datediff(curdate(),birth_date) / 365
from student
但它返回一个浮点值,我想要一个整数。
所以我可以计算年份:
select id, year(curdate())-year(birth_date)
from student
但是有一个问题:比如现在是五月,如果一个人战争出生于 1970 年 6 月,他还有 31 岁而不是 32,但表达式返回 32。
我无法摆脱这个问题,有人可以帮助我吗?
【问题讨论】:
-
哈,我需要计算我数据库中学生的年龄,而你几乎问了我的确切问题...... 6 年前。谢谢! Stack Overflow 很棒。
-
请考虑更改接受的答案。因为接受的答案至少可以说是不准确的。
-
@LeeTaylor 你能详细说明一下吗?
-
@RamyAlZuhouri 我相信您可以更改接受的答案。 Scott Bonner 的答案不正确,因为它没有考虑闰年(见第一条评论)更好的答案是得票最多的答案(这确实考虑了闰年)。
标签: mysql