取得5个下一个生日,包括明年

时间:2019-01-10 10:58:08

标签: 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 december这样的情况下,第二年的员工january并没有受到影响。

我该怎么办?

2 个答案:

答案 0 :(得分:2)

您的查询无效,原因是:  1.您只比较月份和日期,而不比较年份。您还应该比较年份  2.您应该计算下一个生日。

例如:

An unexpected error has occurred     

答案 1 :(得分:1)

基本上,您只需要计算月份,然后将大于或等于当前月份的所有月份加12,这应该给您递归的月份顺序:

select name,
    month(STR_TO_DATE(birth_date, "%m-%d")) AS birth_month,
    if(
        month(STR_TO_DATE(birth_date, "%m-%d")) >= month(now()),
        month(STR_TO_DATE(birth_date, "%m-%d")),
        month(STR_TO_DATE(birth_date, "%m-%d")) + 12
    ) month_order
from `user`
order by month_order
limit 5

如果您使用的是STR_TO_DATE,则不需要DATETIME

  

注意:该功能已连续多年无法使用。就在明年。