MYSQL根据年龄选择生日

时间:2014-09-27 16:28:54

标签: mysql sql

我有一个简单的MYSQL表,我在其中存储了数据类型为date的生日。行:

birthday
--------
1989-09-08

我想选择年龄在25岁以下的用户。我使用以下查询:

SELECT birthday FROM `users` WHERE birthday >= now() - INTERVAL 25 YEAR;

这应返回上面一行,但因为这个生日超过25年且不到26年,MYSQL没有返回它。我选择INTERVAL 26 YEAR

时会返回

是否有更正确的查询可供使用?

2 个答案:

答案 0 :(得分:4)

你有倒退的比较。你想要:

WHERE birthday <= now() - INTERVAL 25 YEAR;

对于范围,请使用:

WHERE birthday <= now() - INTERVAL 18 YEAR and
      birthday > now() - INTERVAL 26 YEAR 

答案 1 :(得分:1)

对于范围你也使用BETWEEN,把最早的日期放在第一位

WHERE birthday BETWEEN 
    CURRENT_DATE - INTERVAL 26 YEAR + INTERVAL 1 DAY
    AND CURRENT_DATE - INTERVAL 18 YEAR

另一种方式,但不建议使用大数据

WHERE TIMESTAMPDIFF(YEAR, birthday) BETWEEN 18 AND 25