Mysql CURDATE() - 1

rhe*_*ras 7 mysql date

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

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

mysql> SELECT CURDATE() -1;
Run Code Online (Sandbox Code Playgroud)

它返回:

| 20150400 |

+--------------+
Run Code Online (Sandbox Code Playgroud)

为什么CURDATE-1没有返回3月31日?

4月00日是一个错误,如果有人能够解释它,那将是很好的.

接下来的4月2日它也运行良好,也适用于本月剩余的日子:

MySQL的>

select CURDATE() -1;

|     20150401 |
Run Code Online (Sandbox Code Playgroud)

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

顺便说一句,我用这个新功能取代了它:

 SELECT SUBDATE(CURDATE(),1)
Run Code Online (Sandbox Code Playgroud)

谢谢.

pal*_*la_ 12

你需要使用CURDATE() - INTERVAL 1 DAY.

你在做什么CURDATE() - 1,将结果CURDATE()视为整数,而不是日期.

所以在4月1日CURDATE() - 1= 20150401 - 1= 20150400,这显然是无效的日期.

MySQL不能直接为你-1做这件事,因为它不知道你是说减少一天,减少一个月,减少一年等​​等.

如上所述使用mySQL的日期间隔是正确的方法


sim*_*eco 9

您可以使用:

SELECT SUBDATE(CURDATE(), 1);
Run Code Online (Sandbox Code Playgroud)

或者

SELECT CURDATE() - INTERVAL 1 DAY;
Run Code Online (Sandbox Code Playgroud)

或者

SELECT SUBDATE(CURDATE(), INTERVAL 1 DAY);
Run Code Online (Sandbox Code Playgroud)

或者

SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY);
Run Code Online (Sandbox Code Playgroud)