执行此查询时,我得到了一个奇怪的回报:
SELECT * FROM rrp
WHERE end > "2012-12-31"
没有返回任何内容,但我在此表上有一行“end”列大于"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
字段
编辑:我的测试使用了错误的数据库=>错误的结果 在日期中添加一天时,问题来自Zend_Date:
$ start =“2012-12-31”; $ nStart = new Zend_Date($ start,“YYYY-MM-dd”); $ end = new Zend_Date($ nStart); $最终> addDay(1);
当我回应$ end:echo $end->get("YYYY-MM-dd");
输出2013-12-31
答案 0 :(得分:2)
很可能是格式化日期的问题
这应该有助于 http://dev.mysql.com/doc/refman/5.0/en/using-date.html
答案 1 :(得分: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')