我有这个查询,需要接下来的 5 个人过生日。
SELECT *
FROM `user`
WHERE DATE_FORMAT(birth_date, '%m-%d') > date_format(curdate(), '%m-%d')
ORDER BY DATE_FORMAT(birth_date, '%m-%d')
LIMIT 5
工作很好,但例如 12 月 12 日
,它不会占用明年 1 月 12 日
的人员。
我该怎么做?
最佳答案
您的查询无效,因为: 1.只比较月和日,不比较年。您还应该比较 Year 2. 你应该计算下一个生日日期。
例如:
SELECT *
FROM `user`
WHERE (birth_date + INTERVAL (YEAR(NOW())-YEAR(birth_date) + IF(DAYOFYEAR(NOW()) >= DAYOFYEAR(birth_date), 1, 0)) YEAR) > CURDATE()
ORDER BY DATE_FORMAT(birth_date, '%m-%d')
LIMIT 5
关于mysql - 获得 5 个下一个生日,包括明年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54127186/