PHP / MySQLの - DATE_FORMATと時間部分
-
13-09-2019 - |
質問
謝罪これは、すでに何回も回答されているが、私は答えを見つけることができなかったと私はflummoxedた場合ます。
私は、一見、私は、データベースにそれを実行したときに、私が望む結果を出力する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スクリプトを実行すると、それはしていません。
任意のアイデア?
多くの感謝!
解決
これは、私はphpMyAdminの上でそれを実行したときに動作するようだが、私はPHPスクリプトを実行すると、それはしていません。
あなたは、文字列を構築するためにsprintf
のようなものを使用していないあなたはありますか?もしそうなら、あなたは別の%
で%
をエスケープする必要があります。
いずれにせよ、あなたは関数<のhref = "http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date" のrel =」を使用することができますnoreferrer nofollowを "> DATE()
の
WHERE `dateField1` > DATE(NOW())
他のヒント
nickfは正しいです。私はそれに同意します。
SQL呼び出しを行うためには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...
sprintfを使用する場合PHPは、型指定子として%()を参照してください。
これを脱出するには、MySQLのフォーマット文字列、すなわち、%% Yまたは%% mまたは%% dの前にもう一つ%を追加する必要があります。 MySQLのクエリへの実際の出力が再び%Yまたは%mまたは%Dとなる。