MYSQL根据年龄范围选择生日

时间:2014-09-27 19:16:05

标签: mysql sql

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

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

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

SELECT * FROM users 
WHERE birthday <= now() - INTERVAL 18 YEAR and
      birthday >= now() - INTERVAL 25 YEAR 

这应该返回上面的行,因为它适合18到25之间的范围,但MYSQL假设它已经26岁,因为它在25到26之间

2 个答案:

答案 0 :(得分:1)

25年前的1989-09-27和1989-08-08不到1989-09-27所以它不会被退回。如果您想要的人数目前为25但尚未26岁,请更改为INTERVAL 26 year + INTERVAL 1 DAY;

答案 1 :(得分:1)

使用这个逻辑:如果18岁的人那么真实:

(birthday + INTERVAL 18 YEAR) <= now() < (birthday + INTERVAL 19 YEAR)

如果某人年满25岁,则为真:

(birthday + INTERVAL 25 YEAR) <= now() < (birthday + INTERVAL 26 YEAR)

通过这种逻辑来吸引年龄在18到25岁之间的用户:

SELECT * FROM users 
WHERE birthday <= now() - INTERVAL 18 YEAR and
      birthday > now() - INTERVAL 26 YEAR