2009-08-13 8 views
1

これはすでに何度も答えられているが、私は答えを見つけることができず、私はうんざりしていた。php/mysql - date_formatと時間部分

私はmysqlクエリを持っていますが、これはデータベースで実行したときに結果を出力していますが、PHPでクエリを実行すると正しく出力されません。データベースで

は、日付は次のように格納されます。

2009-08-13T00:00:00 

私は何をしたい今日の日付より古いデータが表示されていません。だから、WHERE句でこれを行うです:

 WHERE dateField1 >= DATE_FORMAT(now(),'%Y-%m-%d') AND dateField2 >= DATE_FORMAT(now(),'%Y-%m-%d') 

私の意図は、私は()深夜に今の時刻部分を変換する方法を見つけるのに苦労したように、時間の部分を除去することです。

これはPHPMyadminで実行すると動作するようですが、PHPスクリプトを実行すると動作しません。

アイデア?

多くのありがとうございます!

+0

mysqli_queryにmysqli_error($ link)を追加することはできますか? – Dirk

+0

@Lyndsey - 問題が解決した場合は、答えをチェックしてください。 – karim79

答えて

1

これはPHPMyadminで実行すると動作するようですが、私はPHPスクリプトを実行すると動作しません。

あなたは文字列を構築するためにsprintfのようなものを使用していませんか?そう、あなたはどのような場合には、別の%

%をエスケープする必要がある場合は、DATE()

WHERE `dateField1` > DATE(NOW()) 
+0

(彼女は赤い顔です)もう一度考え直してください。 DATE(NOW())を使うのはかなり簡単です - ありがとう! –

0

nickfが正しい機能を使用することができます。私はそれに同意する。 SQL呼び出しを行うためにはsprintf()関数を使用する場合には

、あなたはこのにあなたのクエリを回すことがあります。sprintfのを使用しているとき

$query = sprintf("SELECT * FROM SOME_TABLE WHERE id=%s AND dateField1 >= DATE_FORMAT(now(),'%%Y-%%m-%%d') AND dateField2 >= DATE_FORMAT(now(),'%%Y-%%m-%%d')", $id); 
//Then submit $query for SQL query processing... 

PHPは()型指定子として%を参照してください。

これをエスケープするには、%% Yまたは%% mまたは%% dのように、MySQLフォーマット文字列の前にもう1つ%を追加する必要があります。実際のMySQLクエリへの出力は%Yまたは%mまたは%dになります。

関連する問題