一尘不染

以整数形式获取MySQL中两个日期之间的年份差异

mysql

我正在尝试计算数据库中一个人的年龄。
让我们假设有一个简单的表:

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

但是有一个问题:例如现在是5月,如果一个战争发生在1970年6月,他仍然31岁而不是32岁,但表达式返回32。
我不能摆脱这个问题,有人可以帮我吗?


阅读 787

收藏
2020-05-17

共1个答案

一尘不染

对于遇到此问题的任何人:

可以完成的另一种方法是:

SELECT TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS difference FROM student

在几个月的差异,更换YEARMONTH,日子替换YEARDAY

希望有帮助!

2020-05-17