需要是要查询日期段内过生日的会员,分为两种情况:
1. 不跨年
例如: 查询2017-01-01到2017-01-20之间过生日的会员 (假定今天是2017-01-01则这种也可以描述为20天内过生日的会员)
select * from user where DATE_FORMAT(birthday,'%m-%d') between '01-01' and '01-20'
2. 跨年
例如: 查询2017-12-27到2018-01-05之间过生日的会员, (假定今天是2017-12-27则这种也可以描述为10天内过生日的会员)
这里取今年的起始时间与今年的最后一天做为1组条件,2017-12-27到2017-12-31; 取下年的第一天到下年的结束做为1组条件:2018-01-01到2018-01-05
select * from user where (DATE_FORMAT(birthday,'%m-%d') between '12-27' and '12-31' OR DATE_FORMAT(birthday,'%m-%d') between '01-01' and '01-05' )
分析了两种查询生日的情况, 还有一种情况是闰年生日的情况,留到下次再说.
抛砖引玉,大家有好的方案欢迎交流.