从生日日期列表到每个年龄段的总用户数组

时间:2013-01-19 23:12:00

标签: php mysql sql

我想了解实现这一目标的最有效方法:

我有一个包含我的用户信息的MySQL表,包括生日(YYYY / MM / DD)。我的目标是检索一个数组(php),其中每个年龄段的用户总数为10到60岁。我可以只查询我的所有用户,将生日传递给我写的生日 php函数,然后用总数填充数组。但我想知道是否有办法构建一个为我做这个工作的SQL查询?

3 个答案:

答案 0 :(得分:2)

您应该能够对行进行分组:

SELECT
    FLOOR(DATEDIFF(NOW(), `birthday`)/365) AS 'Age',
    COUNT(*)
FROM `users`
WHERE FLOOR(DATEDIFF(NOW(), `birthday`)/365) BETWEEN 10 AND 60
AND `id` IN (1, 3, 5, 12, 29)
GROUP BY FLOOR(DATEDIFF(NOW(), `birthday`)/365)
ORDER BY FLOOR(DATEDIFF(NOW(), `birthday`)/365) ASC

结果不会包含没有用户的年龄,但我不确定你为什么需要这些。

<强>更新   - 添加了ID过滤器   - 修正了日期计算(哎呀!)   - 命名为新列

答案 1 :(得分:0)

您需要使用MySql的DATEDIFF()

SELECT USER, DATEOFBIRTH FROM USERTABLE WHERE DATEDIFF(DATEOFBIRTH,NOW()) < 60;

答案 2 :(得分:0)

SELECT * FROM tableName 
         WHERE dateOfBirth >= (CURRENT_DATE - INTERVAL 60 YEAR)   
         AND dateOfBirth <= ( CURRENT_DATE - INTERVAL 10 YEAR )

希望我不会被这个数据库专家抨击......