mysql - 获得 5 个下一个生日,包括明年

标签 mysql

我有这个查询,需要接下来的 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/

相关文章:

mysql - 将 MySQL 函数转换为 Oracle PL/SQL

javascript - 使用 JQuery 提交动态表单

php - 我的 WHERE 查询的 MYSQL 部分未运行

mysql - 使用 MySQL 按年和月分组,同时利用索引并避免临时/文件排序

MySQL my.cnf 性能调优建议

javascript - 如何选择多个行值

php - 如何优化我的 Zend Framework 1.11 应用程序?

mysql - 无法从 phpmyadmin 正确导出泰米尔语

mysql - 如何查询 laravel 中的 json 列?

mysql - 如何仅使用SQL选择表A中的列,按分隔符拆分其并将分隔值插入到其他表中?