如何 select 基于日期的 2 年时间范围 - MySQL?

How to select 2-year time range based on a date - MySQL?

我知道如何根据日期select几天:

WHERE 
    date_column > adddate('2021-09-29', -100)
AND 
    date_column < '2021-09-29'

上面的查询 select date_column2021-09-292021-09-29 前 100 天之间的数据。

我的问题是我可以对 year 使用相同的 pattern/syntax 吗?如何操作?是不是像adddate('2021-09-29', -2y)

我知道我可以做类似 date_column BETWEEN '2021-09-29' - INTERVAL 2 YEAR AND '2021-09-29' 的事情,但我不想使用这种语法,我可以使用类似于上面示例中的语法的东西吗,因为我需要在我的 Python代码?谢谢。

您可以使用 DATE_ADD('2021-09-29', INTERVAL -2 YEAR)See this.

你可以这样做:

MAKEDATE(YEAR('2021-09-29') + 2, DAYOFYEAR('2021-09-29'))

您“自己”进行的任何日期运算都需要针对闰年边缘情况进行仔细测试。不用担心那些边缘情况是使用内置日期算术运算的最大和最好的理由。以免您的项目出现在 https://worsethanfailure.com/ 上,这是您不希望发生的。

(他们确实有奇怪的语法,嗯?)