我有一个包含数千个成员记录的MySQL数据库。每个人都有一个生日,这是一个简单的字符串,例如“ 2005-11-01”(yyyy-mm-dd)
我想查询数据库并了解会员的年龄。我希望看到每个年龄段的数据库中有多少成员。所以我很喜欢这样的输出:
age count
--- -----
18 619
19 1321
20 15112
etc.
我该怎么做? (我很想在MySQL中完成所有操作,但如果更容易,我们可以添加一些PHP,Perl或Python)
答案 0 :(得分:2)
您应该使用
SELECT TIMESTAMPDIFF(YEAR, '2005-11-01', CURDATE()) AS age , count(*)
FROM my_table
group by age ;
SELECT TIMESTAMPDIFF(YEAR, dob, CURDATE()) AS age , count(*)
FROM my_table
group by age ;
答案 1 :(得分:1)
如果您还希望照顾leap年,请尝试以下操作:
SELECT
YEAR(CURDATE())-YEAR(DOB) - (DATE_FORMAT(CURDATE(),'%M%D') < DATE_FORMAT(DOB,'%M%D')) `AGE`,
COUNT(*) `COUNT`
FROM YOURTABLE
GROUP BY AGE;