2012-03-14 3 views
0

私は、MySQLのformat_dateに問題があり、その理由を理解していません。私は自分のコードの一部として、次のいる:MySQL FORMAT_DATE%dが '0'を返す

date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%d') 

かかわらず、私が選択した日付の、%dは、単一のゼロ(「0」)として戻っているという事実を除いて、正常に動作するようですいます。 %dを%eに変更すると正しい日付が得られますが、これを使って日付を比較していますので、10未満の数値に先行ゼロが必要です。これはデータベース設定ですか、それとも明白なものがありませんか?

ありがとうございます。

UPDATE:

$q = "SELECT date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%d') as 'today' from content_field_date LIMIT 1"; 

「今日は」「2012-03-0」

として出力し:それは私がこれにクエリを簡素化する場合ので、デシベルで何かであることを持っているような気が

一方、この:

$q = "SELECT date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%e') as 'today' from content_field_date LIMIT 1"; 

は正しく

Zeth '2012-03-17' を返し

+2

奇妙な'SELECT date_format(NOW()+ INTERVAL 3 DAY、 '%Y-%m-%d')'を実行すると、正しく表示されます。あなたのロケールと関係があるのだろうか? –

+0

完全なクエリを表示できますか?これは起こらないはずです。 –

+0

ここにも「0」は表示されません。あなたのターゲットが日付を比較するのであれば、mysqlでも日付を比較できます。 –

答えて

1

あなたは何が起こってはならないと思いますか?あなたはMySQLのバグを見つけたか、何か間違ったことをしています。

日付を比較したい場合は、MySQLで行うことができます。おそらくDATE_FORMAT()を使用しないでください。あなたは、日付を取得するためにこれを使用することができます:

DATE(NOW() + INTERVAL 3 DAY) 

か:

(CURDATE() + INTERVAL 3 DAY) 
+0

私は何かが欠けている場合を除いて、現在の日付と、 'YYYY-MM-DD'と書式設定されたデータベースのフィールドとを比較しています。 – Zeth

+0

列が 'CHAR'で、このように書式化されているか、' DATE'列ですか? –

+1

どちらの場合でも、 '

4

私はDrupalが使用されていたと仮定しています「content_field_date」のあなたのテーブル名に基づいて、今日この同じ問題に遭遇しました。これに対する答えは、ここで見つけることができます:

Some sql queries work in terminal but not with db_query() function in Drupal 6 Why..?

、ここで: http://drupal.org/node/100846

正しいクエリをする必要がありますので、パーセント記号は、エスケープする必要があるという点で:

$q = "SELECT date_format(NOW() + INTERVAL 3 DAY, '%%Y-%%m-%%d') as 'today' from content_field_date LIMIT 1"; 
関連する問題