MySQL按年龄范围查询具有出生日期的表格

时间:2014-09-28 18:40:52

标签: mysql where-clause

我有出生日期的mysql表。我想查询基于当前日期的年龄的行。以下是对具有日期范围的表的查询。

SELECT * FROM `user` WHERE `dob` > '1980-01-20' AND `dob` < '1990-01-20';

我们如何将此查询转换为在同一个表中搜索当前日期的年龄范围?

4 个答案:

答案 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