我想了解实现这一目标的最有效方法:
我有一个包含我的用户信息的MySQL表,包括生日(YYYY / MM / DD)。我的目标是检索一个数组(php),其中每个年龄段的用户总数为10到60岁。我可以只查询我的所有用户,将生日传递给我写的生日 php函数,然后用总数填充数组。但我想知道是否有办法构建一个为我做这个工作的SQL查询?
答案 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 )
希望我不会被这个数据库专家抨击......