我有出生日期的mysql表。我想查询基于当前日期的年龄的行。以下是对具有日期范围的表的查询。
SELECT * FROM `user` WHERE `dob` > '1980-01-20' AND `dob` < '1990-01-20';
我们如何将此查询转换为在同一个表中搜索当前日期的年龄范围?
答案 0 :(得分:3)
以下是您要查找的查询:
SELECT U.*
,DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),U.dob)), ‘%Y’)+0 AS age
FROM `user` U
WHERE DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),U.dob)), ‘%Y’)+0 BETWEEN 20 AND 30
在此示例中,您将拥有年龄在20-30
范围内的所有用户。
希望这会对你有所帮助
答案 1 :(得分:2)
您可以使用year
函数提取当前日期的年份部分。因此,例如,如果您正在寻找年龄在24到34岁之间的用户:
SELECT *
FROM `user`
WHERE (YEAR(NOW()) - YEAR(`dob`)) BETWEEN 24 AND 34
答案 2 :(得分:2)
以下是让所有年龄在15到20岁之间的用户的示例
SELECT * FROM users
WHERE birthday <= now() - INTERVAL 15 YEAR and
birthday > now() - INTERVAL 21 YEAR
答案 3 :(得分:1)
SELECT *
FROM user
WHERE TIMESTAMPDIFF(YEAR, dob, CURDATE()) >= 25
AND TIMESTAMPDIFF(YEAR, dob, CURDATE()) <= 30