0

执行此查询时,我得到了一个奇怪的返回:

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

没有返回任何内容,尽管我在此表上有一行“结束”列大于"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并且enddate字段

编辑:我为我的测试使用了错误的数据库=>错误的结果问题来自 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 回答