MySQLで過去x日間と言う条件を書く

 MySQLで指定日数前の日付を取得する場合、

DATE(DATE_ADD(NOW(), INTERVAL -日数 DAY))

で取得出来る。

createdateに日付を入れていて、最近7日以内に作られたレコードを求める場合、

SELECT * FROM my_table WHERE createdate >= DATE(DATE_ADD(NOW(), INTERVAL -7 DAY))

みたいになる。 ちなみに -0 DAYなら今日になる。

 関連して、日付の曜日を取得する場合、

WEEKDAY(日付)

で取得する。 0が月曜で始まる。

 今週の月曜日の日付は、

DATE(DATE_ADD(NOW(), INTERVAL -WEEKDAY(NOW()) DAY))

で取得出来る。

 今週の月曜日からの記録を切り出す場合、

createdate >= DATE(DATE_ADD(NOW(), INTERVAL -WEEKDAY(NOW()) DAY))

で取得。

 先週の月曜から金曜までの記録を切り出す場合、

createdate >= DATE(DATE_ADD(NOW(), INTERVAL -WEEKDAY(NOW())-7 DAY)) AND createdate < DATE(DATE_ADD(NOW(), INTERVAL -WEEKDAY(NOW())-3 DAY))

※BETWEENは以上以下。 時刻なしのDATEは0時0分0秒扱いだから1秒減算する必要がある。

(266)


カテゴリー: MySQL   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です