mysql返回最近生日的天数并按从近到远排序 最近在研究生日管家。 一个人录入了N多生日,按要求从近到远返回用户的生日以及离生日天数,并分页。 贴代码 ~~~ SELECT `id`, `type`, `title`, `sex`, `tel`, `birthday`, `remark`, `is_remind`, `create_time`, DATEDIFF(CONCAT(YEAR(now()),"-",date_format(birthday,"%m-%d")),date_format(now(),"%Y-%m-%d")) as willBirthday FROM `cc_birth` WHERE ( `user_id` IS NULL ) AND `cc_birth`.`delete_time` IS NULL ORDER BY ORDER BY willBirthday < 0 asc,willBirthday ASC LIMIT 0,10 ~~~ 解释 ~~~ DATEDIFF(CONCAT(YEAR(now()),"-",date_format(birthday,"%m-%d")),date_format(now(),"%Y-%m-%d")) as willBirthday # DATEDIFF(a,b)计算A,B两个日期之间的天数 # CONCAT(YEAR(now()),"-",date_format(birthday,"%m-%d")) 将用户的生日如1989-11-17转换为今年日期2019-11-17 # date_format(now(),"%Y-%m-%d")) 返回当前日期 ~~~ ~~~ # 排序 ORDER BY willBirthday < 0 asc,willBirthday ASC # willBirthday < 0 asc 将负数排在后面 # 整句为将负数排在后面,并且从0开始升序排序。 ~~~ 结果 返回负数代表生日已过多少天 