人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MYSQLの検索に関するしつもんです。

あるDBがありそこにはあるtable testがあります。
そのtestは1つのカラム mydate をもちます。
このmydateはdatetime型となっおり
test tableにはすでにデータが複数収まっています。

カラムdateを検索の対象としてデータを抽出する際のSql文が今回の質問です。

現在の日時と同じデータを持つレコードを抽出すべき
このようなsql文をつくり実行していますがうまくいきません。
DB Error: syntax error となってしまいます。

$d_date = date("Y-m-d H:i:s");
$sql = <<<EOS
SELECT*FROM test WHERE mydate = $d_date
EOS;

どのようにしたらいいでしょうか?
また、その際に、条件もマッチを 2007-06-07 00:00:00 というフルのマッチを条件としていますが
秒を抜いた
2007-06-07 00:00
がマッチすればよい、というようにしたいです。

ご教授おねがいします。





●質問者: ken1bf7
●カテゴリ:インターネット ウェブ制作
✍キーワード:00 2007-06-07 dB EOS MySQL
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● kn1967
●60ポイント

phpで良いのかな?

$d_date = date("Y-m-d H:i:s");
$sql = <<<EOS
SELECT*FROM test WHERE mydate = $d_date
EOS;
echo $sql;

などといった形で$sqlの中身を確認してみましたか?

('シングルクォーテーション'が無いです)

http://dev.mysql.com/doc/refman/4.1/ja/datetime.html


以下は一例です。

$d_date = date("Y-m-d H:i");
$sql = "SELECT*FROM test WHERE DATE_FORMAT(mydate,'%Y-%m-%d %H:%i')='" . $d_date . "'";

下記ならばインデックスが有効に働きます。

$d_date1 = date("Y-m-d H:i:00");
$d_date2 = date("Y-m-d H:i:59");
$sql = "SELECT*FROM test WHERE mydate BETWEEN '" . $d_date1 . "' AND '" . $d_date2 . "'";

http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.h...

余談になりますが、長文になる場合は<<<による記述は有効ですが、短いソースの場合は逆に見づらくなりますので使い分けを考慮してみてください。

◎質問者からの返答

すみません、書き忘れました。

PHPです。

大変わかりやすい説明ありがとうございました。

無事得たい結果を出せました。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ