0

このクエリには結果もエラーもありません。バーはデータ型DATETIMEです。

SELECT * FROM foo WHERE DATE(bar) = '2013-02-26';

このクエリ:

SELECT COUNT(*),DATE(bar) FROM foo GROUP BY DATE(bar) ORDER BY DATE(bar) DESC;

これらの結果が得られます。

結果

私は何が間違っているのですか?

//編集何らかの理由でこれは期待どおりに機能します...

 SELECT * FROM foo WHERE DATE_FORMAT(bar,'%Y-%m-%d') = "2013-02-26"
4

1 に答える 1

1

あなたが投稿したクエリに「間違った」ものは何もありません。そのクエリが 0 行を返す理由について簡単な説明はありません。

問題をデバッグするために、このクエリが行を返すかどうかを確認することをお勧めします。

SELECT bar
  FROM foo
 WHERE DATE(bar) = '2013-02-26'
 LIMIT 10

またはこれ

SELECT bar
  FROM foo
 WHERE bar >= '2013-02-26'
   AND bar  < '2013-02-26' + INTERVAL 1 DAY
 LIMIT 10

(注: 後者のクエリは、先頭の列が ; のインデックスを使用するインデックス レンジ スキャン操作を利用できます (関数でカラムbarをラップする他のクエリ形式では、MySQL はインデックス レンジ スキャンを使用できません)。barDATE

ファローアップ:

次に、その式を SELECT リストに追加して、DATE(bar) が返す値を確認します...

SELECT DATE(bar)
     , bar
  FROM foo
 WHERE bar >= '2013-02-26'
   AND bar  < '2013-02-26' + INTERVAL 1 DAY
 LIMIT 10
于 2013-02-27T19:22:31.840 に答える