在 mysql 中,DATE_ADD() 和简单的 +/- INVERVAL 不同吗?

问题描述

我正在做一个 leetcode 问题 (https://leetcode.com/problems/new-users-daily-count/),我使用 date_add() 得到正确答案,但使用 -/+ 间隔得到错误答案。我以为我可以交互使用它们,但现在似乎我需要总是使用 date_add()?

select date_add('2019-06-30',interval -90 day),cast("2019-06-30" as date) - interval 3 month

输出

{"headers": ["date_add('2019-06-30',interval -90 day)","cast(\"2019-06-30\" as date) - interval 3 month"],"values": [["2019-04-01","2019-03-30"]]}

我使用 date_add 得到了“2019-04-01”,但使用 - 间隔得到了“2019-03-30”。

解决方法

减去 3 个月几乎总是会得到与加上 -90 天不同的结果,因为 3 个月通常不是 90 天。如果您将 date_add 表单从

date_add('2019-06-30',interval -90 day)

date_add('2019-06-30',interval -3 months)

或更改您的 +/- 区间形式

cast("2019-06-30" as date) - interval 3 month

cast("2019-06-30" as date) - interval 90 day

它们应该匹配。