所有年份的Mysql生日查询

时间:2017-11-02 12:06:14

标签: mysql

我有一个客户表,我想过滤所有生日在给定日期范围之间的客户,比如1月1日和3月15日。 我一直试图使用:

(DAY(birthday) >= 01 AND MONTH(birthday) >= 01) AND (DAY(birthday) <= 15 AND MONTH(birthday) <= 03)

但这只会返回生日在1日至15日之间的人,1月1日至15日,2月1日至15日和3月1日至15日。难道没有办法做到这一点:

birthday BETWEEN '%-01-01' AND '%-03-15'

提前致谢

2 个答案:

答案 0 :(得分:3)

您可以将CASEWHERE一起使用,例如:

WHERE
  CASE 
    WHEN MONTH(birthday) BETWEEN 1 AND 2 THEN DAY(birthday) BETWEEN 1 AND 31
    WHEN MONTH(birthday) = 3 THEN DAY(birthday) BETWEEN 1 AND 15
    ELSE FALSE
  END

答案 1 :(得分:2)

您也可以使用DayOfYear获取一年中的日期编号,因此1月1日是第1天。而1月8日是第213天。

这将完全忽略这一年。

SELECT * 
FROM `table` 
WHERE DayOfYear(`birthday`)
BETWEEN DayOfYear('01-01-01') AND DayOfYear('2200-03-15')

找到:Date between dates, ignore year