我正在尝试计算数据库中一个人的年龄。 让我们假设有一个简单的表:
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。 我不能摆脱这个问题,有人可以帮我吗?
对于遇到此问题的任何人:
可以完成的另一种方法是:
SELECT TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS difference FROM student
在几个月的差异,更换YEAR用MONTH,日子替换YEAR用DAY
YEAR
MONTH
DAY
希望有帮助!