Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql CURDATE()-1_Mysql_Date - Fatal编程技术网

Mysql CURDATE()-1

Mysql CURDATE()-1,mysql,date,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情况下,此功能

拜托,我不明白为什么这个命令返回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情况下,此功能似乎无法运行

这应该在参考指南中突出显示

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

 SELECT SUBDATE(CURDATE(),1)

谢谢。

您需要使用
CURDATE()-间隔1天

您使用
CURDATE()-1
所做的是将
CURDATE()
的结果视为整数,而不是日期

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

MySQL无法为您直观地解释这一点,因为使用
-1
它不知道您指的是少一天、少一个月、少一年等等

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

您可以使用:

SELECT SUBDATE(CURDATE(), 1);


非常感谢帕拉的澄清,事实上,现在我正在使用>选择子日期(CURDATE(),1),我认为也可以。
SELECT CURDATE() - INTERVAL 1 DAY;
SELECT SUBDATE(CURDATE(), INTERVAL 1 DAY);
SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY);