• ベストアンサー

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だと思っていたのですが、月をまたいだりした時に抽出されるべきではないレコードが表示されるので間違いに気付いたのですが、どう修正すべきなのか分からない状況です。 どなたか良い方法があれば、教えて頂きたいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taaaaaaa
  • ベストアンサー率38% (31/80)
回答No.2

これで 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 でどうでしょうか。

mintia444
質問者

お礼

無事に解決する事ができました! 本当に助かりました。ありがとうございます。 これからもっと勉強していきたいと思います。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

#1です。 すみませんWEEKはないです、かきまちがい・・・ それと#2さんのように1週間前なら-INTERVAL 6 DAYの方がいいですね

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

ちょっと命題が微妙ですが・・・ 単純に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) でどうでしょう?

mintia444
質問者

お礼

回答ありがとうございます! もう一人の方のやり方でもこっちでもできました。 確かに1週間前といっても時刻も考慮しないとダメですね。 一週間前の0時0分でいこうかと思います。

関連するQ&A