我有一个简单的MYSQL表,我在其中存储了数据类型为date的生日。行:
birthday
--------
1989-09-08
我想选择年龄在25岁以下的用户。我使用以下查询:
SELECT birthday FROM `users` WHERE birthday >= now() - INTERVAL 25 YEAR;
这应返回上面一行,但因为这个生日超过25年且不到26年,MYSQL没有返回它。我选择INTERVAL 26 YEAR
是否有更正确的查询可供使用?
答案 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