1

すでに何度も回答されていることをお詫びしますが、回答が見つからず、困惑しました。

データベースで実行したときに必要な結果を出力するように見えるmysqlクエリがありますが、PHPを介してクエリを実行すると、正しく出力されません。

データベースでは、日付は次のように保存されます。

2009-08-13T00:00:00

私がやりたいのは、今日の日付より古いデータを表示しないことです。したがって、where句でこれを行います。

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

now()の時間部分を真夜中に変換する方法を見つけるのに苦労していたので、私の意図は時間部分を取り除くことです。

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

何か案は?

どうもありがとう!

4

2 に答える 2

1

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

文字列を作成するようなものを使用していませsprintfんか?もしそうなら、あなたは%別のもので脱出する必要があります%

いずれにせよ、あなたは機能を使うことができますDATE()

WHERE `dateField1` > DATE(NOW())
于 2009-08-13T14:10:14.780 に答える
0

nickfは正しいです。私はそれに同意します。

sprintf()関数を使用してSQL呼び出しを行う場合は、クエリを次のように変換できます。

  $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は、sprintf()を使用する場合、%を型指定子と見なします。

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

于 2010-01-22T03:09:11.493 に答える