こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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


どなたか良い方法があれば、教えて頂きたいです。
よろしくお願いします。

投稿日時 - 2009-01-21 00:04:58

QNo.4647258

すぐに回答ほしいです

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

これで

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

でどうでしょうか。

投稿日時 - 2009-01-21 10:14:49

お礼

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

投稿日時 - 2009-01-21 18:23:17

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

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

投稿日時 - 2009-01-21 10:20:22

ANo.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)

でどうでしょう?

投稿日時 - 2009-01-21 09:46:30

お礼

回答ありがとうございます!

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

投稿日時 - 2009-01-21 18:31:19

あなたにオススメの質問