ある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
がマッチすればよい、というようにしたいです。
ご教授おねがいします。
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です。
大変わかりやすい説明ありがとうございました。
無事得たい結果を出せました。
ありがとうございました。