我想了解实现这一目标的最有效方法:
我有一个MySQL表与我的用户信息,包括生日(年月日)。我的目标是检索一个数组(php),其中包含年龄从10岁到60岁的每个用户的总数。我可以查询所有用户,将生日传递给我编写的birthday to age php函数,然后用总数填充数组。但我想知道是否有一种方法来建立一个sql查询,为我做这项工作?
您应该能够对行进行分组:
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过滤器-修正日期计算(哎呀!)-命名新列
SELECT * FROM tableName
WHERE dateOfBirth >= (CURRENT_DATE - INTERVAL 60 YEAR)
AND dateOfBirth <= ( CURRENT_DATE - INTERVAL 10 YEAR )
希望我不会在这个问题上被数据库专家抨击…
你需要使用MySql的DATEDIFF()。
SELECT USER, DATEOFBIRTH FROM USERTABLE WHERE DATEDIFF(DATEOFBIRTH,NOW()) < 60;