重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

いつもお世話になります。MYSQL4.1.22を利用しています。

テーブル「offer」
offer_id | offer_day |persons
01 |2008-11-15 | 15
02 |2009-01-03 | 05
03 |2009-01-15 | 11
04 |2009-01-20 | 04

というような日付を入れたテーブルがあり、
例えば、entry_day = '2009-01-13' を指定した場合に
近直の2009-01-03の日付のデータを抜き出すための
SQL文の書き方を御指導頂きたいです。

SELECT MAX(DATEDIFF(entry_day,offer_day) AS period) AS max_period FROM offer

とするとエラーが出ました。
すみませんが、どうぞよろしくお願いいたします。

A 回答 (2件)

'entry_day'というのはofferテーブル内に無いところを見ると、カラム名ではないのですよね?



であれば、offerテーブルのentry_dayを参照しようとしてもないので当然エラーになると思うのですが・・・。

また「近直」の意味ですが、例から察するに「指定日よりも過去で最大の日」という解釈でよろしいでしょうか?

であれば、単純に以下で良いと思うのですが、どうでしょうか。
offer_dayはDATE型のカラムである前提です。


SELECT MAX(offer_day) AS max_period FROM offer
WHERE offer_day <= '2009-01-13';
    • good
    • 0
この回答へのお礼

entry_day はカラム名ではありません。変数に代入した値です。

教えて頂きましたSQL文で試しましたところ期待とおりの結果を得ることができました。誠にありがとうございます。

今後もどうぞよろしくお願いいたします。

お礼日時:2009/01/28 15:13

2009-01-13の直近日は2009-01-15ですが、「近直」というのは、


直近の過去日ということなのでしょうか?

また、entry_dayはどこに指定されているのでしょうか?
すべてのデータにおなじentry_dayフィールドがあるわけでは
ないですよね?
    • good
    • 0

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