【问题标题】:Mysql CURDATE() -1Mysql CURDATE() -1
【发布时间】:2015-04-02 09:39:31
【问题描述】:

拜托,我不明白为什么这个命令会返回 00 April

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

mysql> SELECT CURDATE() -1;

它返回:

| 20150400 |

+--------------+

为什么CURDATE-1 不返回31st?,

00 April 是一个错误,如果有人能解释一下,那就太好了。

接下来,在 4 月 2 日,它运行良好,该月的其余日子也是如此:

mysql>

select CURDATE() -1;

|     20150401 |

此函数似乎无法在当前月份范围之外的 +x / -x 下运行。

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

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

 SELECT SUBDATE(CURDATE(),1)

谢谢。

【问题讨论】:

    标签: mysql date


    【解决方案1】:

    您需要使用CURDATE() - INTERVAL 1 DAY

    你对CURDATE() - 1 做了什么,将CURDATE() 的结果视为整数,而不是日期。

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

    MySQL 无法为您直觉,因为-1 不知道您的意思是少一天、少一个月、少一年等等。

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

    【讨论】:

    • 非常感谢 Pala_ 的澄清,确实现在我正在使用 > SELECT SUBDATE(CURDATE(),1) ,我认为也可以。
    【解决方案2】:

    你可以使用:

    SELECT SUBDATE(CURDATE(), 1);
    

    SELECT CURDATE() - INTERVAL 1 DAY;
    

    SELECT SUBDATE(CURDATE(), INTERVAL 1 DAY);
    

    SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多