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

In mysql, are DATE_ADD() and simply +/- INVERVAL different?

我正在做一道 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

它们应该匹配。