アプリ版:「スタンプのみでお礼する」機能のリリースについて

タイトルの通りですが、MySQLのSELECT文についてです。

以下のようなテーブルがあったとします。
MEMBER{
ID SMALLINT
M_DATE TIMESTAMP}

このテーブルのM_DATEが現在の日付から一週間以内であるレコードの検索を以下のようなSQL文で実行しました。

SELECT * FROM MEMBER
WHERE M_DATE BETWEEN (NOW() - 00000000070000) AND NOW();

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


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

A 回答 (3件)

#1です。


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

これで



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

でどうでしょうか。
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/01/21 18:23

ちょっと命題が微妙ですが・・・



単純に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)

でどうでしょう?
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2009/01/21 18:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!