0

このクエリを実行すると、奇妙なリターンが返されます:

SELECT * FROM rrp
WHERE end > "2012-12-31"

このテーブルには、「終了」列がより大きい行が 1 つありますが、何も返されません"2012-12-31"

rrp

id_r  |  id__b  |    start    |    end     | quantity
27         29     2012-01-01    2012-05-05      1
31         29     2012-11-01    2013-01-01      1

編集:startおよびフィールドendですdate

EDIT : テストに間違ったデータベースを使用しました => 日付に日を追加するときに Zend_Date から問題が発生したという間違った結果:

$start = "2012-12-31"; $nStart = new Zend_Date($start, "YYYY-MM-dd"); $end = new Zend_Date($nStart); $end->addDay(1);

$end をエコーし​​たとき:echo $end->get("YYYY-MM-dd");

それは出力します2013-12-31

4

2 に答える 2

2

ほとんどの場合、日付のフォーマット方法に問題があります

これは
http://dev.mysql.com/doc/refman/5.0/en/using-date.htmlに役立つはずです

于 2012-04-10T15:44:14.120 に答える
2

endが DATE 列の場合、期待どおりに動作するはずです。

SELECT
    STR_TO_DATE('2013-01-01', '%Y-%m-%d') < "2012-12-31",
    STR_TO_DATE('2012-05-05', '%Y-%m-%d') < "2012-12-31"

...0, 1私の箱に戻ります。

私が考えることができる唯一の可能な欠陥は、システムのデフォルトの日付形式が次のようになっていないこと%Y-%m-%dです。

SELECT @@DATE_FORMAT

その場合、毎回フォーマットを指定する必要があります。

SELECT *
FROM rrp
WHERE end > STR_TO_DATE('2012-12-31', '%Y-%m-%d')
于 2012-04-10T16:03:32.303 に答える