Mysql CURDATE() - 1

时间:2015-04-02 09:39:31

标签: mysql date

请不要理解为什么这个命令会在4月00日返回。

今天是2015年4月1日,并执行:

mysql> select CURDATE() -1;

它返回:

| 20150400 |

+--------------+

为什么CURDATE-1不会在3月31日返回?

4月00日是一个错误,如果有人能够解释它,那就太好了。

接下来的4月2日它也很有效,也是在这个月的剩余时间里:

的MySQL>

select CURDATE() -1;

|     20150401 |

此函数似乎无法在当前月份范围内使用+ x / -x运行。 这应该在参考指南中突出显示。

BTW,我用这个新功能取代了它:

 SELECT SUBDATE(CURDATE(),1)

感谢。

2 个答案:

答案 0 :(得分:8)

您需要使用CURDATE() - interval 1 day

您对CURDATE() - 1做了什么,将CURDATE()的结果视为整数,而不是日期。

因此,4月1日,CURDATE() - 1 = 20150401 - 1 = 20150400,这显然是无效日期。

MySQL不能直接为你做这件事,因为对-1而言,它不知道你是说一天少,少一个月,少一年等等。

使用mySQL的日期间隔是正确的方法

答案 1 :(得分:1)

使用

SELECT SUBDATE(CURDATE(), 1);

SELECT CURDATE() - INTERVAL 1 DAY;

SELECT SUBDATE(CURDATE(), INTERVAL 1 DAY);

SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY);