MYSQL根据年龄选择生日

MYSQL根据年龄选择生日,mysql,sql,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 是否有更正确的查询可供使用?您可以向后比较

我有一个简单的MYSQL表,在这里我用数据类型date存储生日。行:

birthday
--------
1989-09-08
我想选择年龄为25岁的用户。我使用以下查询:

SELECT birthday FROM `users` WHERE birthday >= now() - INTERVAL 25 YEAR;
这应该返回上面的一行,但是因为这个生日超过25年,而不到26年,MYSQL不会返回它。当我选择
INTERVAL 26 YEAR


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

您可以向后比较。你想要:

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

其中生日对于您也使用的日期范围,请将最早的日期放在第一位

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

试试生日>=日期(curdate(),间隔25年)如何选择18年到25年的范围?我尝试了这个范围,但它会导致同样的问题,在上面的查询中,您会将“25”替换为“18”。
WHERE TIMESTAMPDIFF(YEAR, birthday) BETWEEN 18 AND 25