【问题标题】:2020-09-01 - 2020-08-31 = 70 days2020-09-01 - 2020-08-31 = 70 天
【发布时间】:2020-09-02 17:00:45
【问题描述】:

我做错了什么还是这是一个普遍的错误?我在 2 台服务器上尝试了这个查询,都得到了 70 的回报:

SELECT DATE('2020-09-01')-DATE('2020-08-31')

我认为我应该得到 1 而不是 70。

【问题讨论】:

  • 在数字上下文中使用时,服务器将日期转换为 YYYYMMDD 格式,然后将它们视为整数。 20200901 - 20200831 = 70,一切都正确。
  • @Akina 现在一切都说得通了。谢谢你的清楚解释。你会把它作为答案发布吗?谢谢

标签: mysql date


【解决方案1】:

使用DATEDIFF函数,例如:

mysql> SELECT DATEDIFF('2020-09-01', '2020-08-31');
+--------------------------------------+
| DATEDIFF('2020-09-01', '2020-08-31') |
+--------------------------------------+
|                                    1 |
+--------------------------------------+
1 row in set (0.01 sec)

mysql> 

【讨论】:

  • ... 或 TIMESTAMPDIFF。当操作数有时间部分并且需要 24 小时范围的数量时,后者可能更安全。
【解决方案2】:

如果您要计算天数差异,请使用:

SELECT datediff('2020-09-01', '2020-08-31') as 'days'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多