草庐IT

MySQL CURDATE() -1

coder 2023-10-04 原文

拜托,我不明白为什么这个命令返回 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/

有关MySQL CURDATE() -1的更多相关文章

随机推荐