需求是查询日期段内过生日的会员,分为两种状况:sql
1. 不跨年code
例如: 查询2017-01-01到2017-01-20之间过生日的会员 (假定今天是2017-01-01则这种也能够描述为20天内过生日的会员)class
select * from user where DATE_FORMAT(birthday,'%m-%d') between '01-01' and '01-20'
2. 跨年select
例如: 查询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' )
分析了两种查询生日的状况, 还有一种状况是闰年生日的状况,留到下次再说.co
抛砖引玉,你们有好的方案欢迎交流. 日期