拜托,我不明白为什么这个命令返回 00 April。
今天是 2015 年 4 月 1 日,执行:
mysql> SELECT CURDATE() -1;
它返回:
| 20150400 |
+--------------+
为什么 CURDATE-1 不返回 3 月 31 日?,
00 April 是个错误,如果有人能解释一下就好了。
接下来,在 4 月 2 日,它运行良好,对于该月的其余日子也是如此:
MySQL>
select CURDATE() -1;
| 20150401 |
此函数似乎无法在当前月份范围之外使用 +x/-x 进行操作。
这应该在引用指南中突出显示。
顺便说一句,我用这个新函数替换了它:
SELECT SUBDATE(CURDATE(),1)
谢谢。
最佳答案
您需要使用 CURDATE() - INTERVAL 1 DAY。
您对 CURDATE() - 1 所做的是将 CURDATE() 的结果视为整数,而不是日期。
所以在 4 月 1 日,CURDATE() - 1 = 20150401 - 1 = 20150400,这显然是一个无效日期。
MySQL 无法凭直觉知道这一点,因为对于 -1,它不知道您的意思是少一天、少一个月、少一年,等等。
如上使用 MySQL 的日期间隔是正确的方法。
关于MySQL CURDATE() -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29409679/