月を指定すると、MYSQL エンジンは十分にスマートになり、(うるう年かどうかに関係なく) 月の正しい日数を取得し、それに応じて日付フィールドを評価します。
選択した 2 つの日付の間のデータを取得するには: (interval -1 year
今日から 1 年分を取得するために使用)
SELECT * FROM yourtable
WHERE yourdate BETWEEN DATE_ADD(Now(), Interval -1 YEAR)
AND Now()
AND MONTH(yourdate) = 2 -- to get data for Month of February
;
または、YEAR関数を使用せずに単純に書くこともできますBETWEEN
SELECT * FROM yourtable
WHERE YEAR(yourdate) = YEAR(Now()) - 1
AND MONTH(yourdate) = 2 -- to get data for Month of February
;
関数に関する質問についてStr_to_Date
は、日付を含む文字列を目的の形式の日付型に変換するために使用され、関数の逆ですDATE_FORMAT
。
SELECT STR_TO_DATE('12-Apr-2012', '%d-%M-%Y')
FROM DUAL
;
上記のデモでは、関数に追加する形式で日、月、年の配置を指定する必要があることに注意してくださいSTR_TO_DATE
。
PS:質問に示されている同じデータと予想される結果がなければ、ここで実際に達成しようとしていることはかなり曖昧です.. :)