请不要理解为什么这个命令会在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)
感谢。
答案 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);