- ベストアンサー
MySQLでTIMESTAMP型の列から現在日付の1週間以内のデータ検索をSQL文で
タイトルの通りですが、MySQLのSELECT文についてです。 以下のようなテーブルがあったとします。 MEMBER{ ID SMALLINT M_DATE TIMESTAMP} このテーブルのM_DATEが現在の日付から一週間以内であるレコードの検索を以下のようなSQL文で実行しました。 SELECT * FROM MEMBER WHERE M_DATE BETWEEN (NOW() - 00000000070000) AND NOW(); 最初はこれでOKだと思っていたのですが、月をまたいだりした時に抽出されるべきではないレコードが表示されるので間違いに気付いたのですが、どう修正すべきなのか分からない状況です。 どなたか良い方法があれば、教えて頂きたいです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
これで SELECT * FROM MEMBER WHERE M_DATE BETWEEN between date_add(date(now()), interval -6 day) and date_format(now(), '%Y.%m.%d') ORDER BY M_DATE でどうでしょうか。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
#1です。 すみませんWEEKはないです、かきまちがい・・・ それと#2さんのように1週間前なら-INTERVAL 6 DAYの方がいいですね
- yambejp
- ベストアンサー率51% (3827/7415)
ちょっと命題が微妙ですが・・・ 単純に1週間前の今の時間から間をとっていいなら WHERE M_DATE BETWEEN (NOW() - INTERVAL 1 WEEK) AND NOW() 一週間前の0時0分からであれば、 WHERE M_DATE BETWEEN (CURDATE() - INTERVAL 7 DAY) AND (CURDATE() + INTERVAL 1 DAY) でどうでしょう?
お礼
回答ありがとうございます! もう一人の方のやり方でもこっちでもできました。 確かに1週間前といっても時刻も考慮しないとダメですね。 一週間前の0時0分でいこうかと思います。
お礼
無事に解決する事ができました! 本当に助かりました。ありがとうございます。 これからもっと勉強していきたいと思います。