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

解決済みの質問

MySQLにおける条件/公開日を指定するには

お世話になります。データベースからの呼び出しに関して質問があります。
hogeというテーブルにid(int),date(date),title(smalltext),comment(longtext)の構成で
SELECT * FROM hoge ORDER BY date DESC LIMIT 5
日付順に5件までのレコードを表示しておりますが、dateに未来の日付を入力しその日付になったらレコード公開する場合どのようにしたらいいのでしょうか。(よくブログなどでエントリの投稿日付を指定できるような感じです)
例として日記をWEBで公開しおりその日付(date)になったらあらかじめインサートしておいたレコードがWEB上で先頭に公開されるということです。
whereで条件を指定するのだと思いましたが、Syntaxエラーが出るだけでもう何がなにやらです…。一時的に未来の日付のものをサスペンドというかロックをかけるという手段も探して見たのですがお手上げとなってしまいましたのでなにとぞご教授よろしくお願いいたします。
環境(ローカルテスト環境)
MYSQL 5.027
ただしリモート上のSQLが4.1.21となっております。
ややこしくてすいません。よろしくお願いします。

投稿日時 - 2007-08-29 16:59:10

QNo.3297442

困ってます

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

こんにちわ
取り合えず、参考意見として、、、

SELECT
*
FROM
hoge X
WHERE
X.date < [外部から入力した日付]
ORDER BY
X.date DESC
LIMIT 5
;

私の端末に環境がないので試してもいないのですが
上記の SQLの様なかんじでしょうか?

最初、nitchsatchさんの質問、テーブル構造を見たとき
条件式に含もうとしているフィールドに dateフィールドがありました。
そのまま使用すると、もしかして、、、
1. データ型dateを記述しているのだと MySQLに誤読されるためエラー
2. 関数dateと誤解されてエラー(そんな関数があるかも分かりませんが、、(汗)
上記のような現象になると考えたので
テーブル名やテーブル別名を使用してフィールド名と明記すれば大丈夫かなぁ、、、と


、、、無知な回答で失礼します。

投稿日時 - 2007-08-29 17:38:00

お礼

ご回答ありがとうございます。
アドバイスどおり
SELECT * FROM tbl1 where hiduke <= DATE_FORMAT(now(),'%Y-%m-%d') ORDER BY hiduke DESC
としフィールド名を変更しましたら無事希望どおりの結果と
なりました。基本的なことを忘れていました。大変ありがとうございます。

投稿日時 - 2007-08-29 19:06:34

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

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

回答(2)

ANo.2

SELECT *
FROM `hoge`
WHERE `date` >=CURDATE()
ORDER BY `date` DESC
LIMIT 5

としてみてはいかがでしょう?

投稿日時 - 2007-08-29 18:02:41

お礼

ご指摘のとおりフィールド名に問題があり
フィールド名変更で確認。その後元に戻し
クォーテーションでくくってみて同結果になり
無事解決いたしました。大変ありがとうございました。
基本は大事だということを痛感いたしました。

投稿日時 - 2007-08-29 19:10:43

あなたにオススメの質問