比较mySQL中不同年份的日期

时间:2012-04-10 15:39:23

标签: mysql date comparison

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

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

编辑:startenddate字段

编辑:我的测试使用了错误的数据库=>错误的结果 在日期中添加一天时,问题来自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

2 个答案:

答案 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')