3

このようにフォーマットされたMySQLでの日付範囲の選択に関して簡単な質問がありますYYYY-MM-DD

MySQLの選択期間の問題を読み、その基本的な使用法を理解しましたが、たとえば2月29日を「含める」にはどうすればよいですか?PHPの回避策を避けたいのですが、MySQLにそのようなものはありますか?

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-dateがよくわかりません

誰かが2月から昨年のデータを選択する方法の例を教えてもらえますか?

4

2 に答える 2

7

月を指定すると、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:質問に示されている同じデータと予想される結果がなければ、ここで実際に達成しようとしていることはかなり曖昧です.. :)

于 2013-01-24T07:57:49.260 に答える
3

以下のクエリは、昨年2月のデータを提供します

SELECT * FROM `your_table_name` WHERE YEAR(`your_date_field_name`) = YEAR(CURRENT_DATE()) AND MONTH(`your_date_field_name`) = 2
于 2013-01-24T06:53:36.320 に答える