2017-11-02 8 views
1

私は顧客のテーブルを持っています。誕生日が指定された日付の範囲にある顧客をすべてフィルタリングしたいと思います.1月1日と3月15日です。 私が使用しようとしてきた:Mysqlすべての年の誕生日のクエリ

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

をしかし、これは、その誕生日の15に2月の15と1 1月、1の15に1日目と15 1との間にあるものだけを返します。行進。これを行うための方法はありません。事前に

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

おかげ

答えて

2

1日は1日ですので、1日は1日です。そして、1月は213日です。

この年は完全に無視されます。発見

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

Date between dates, ignore year

+0

これは完璧ですありがとう – Danubio

3

あなたはWHERECASEを、使用することができ、例えば:あなたはまた、取得するためにDayOfYearを使用することができ

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 
関連する問題