日期范围 mysql

Date range in mysql

我有一个要求,需要从特定月份开始检索数据,但仅限于几年。示例是从 2019 年 8 月 1 日到一年后的所有数据,即 2020 年 8 月 1 日。月份值可能会有所不同,因此在此示例中为八月,但也可能是五月或九月。

SELECT 
    *
FROM
    Reports
WHERE
  Fromdate BETWEEN '2019-08-01' AND DATE_ADD('2019-08-01', INTERVAL 365 DAY)
ORDER BY dateFrom ASC;

此处 between 只会获取 2019 年和之后 365 天的数据,但 2019 年已被烘焙。我应该如何将选择标准放在 between 子句中,以便它是动态的?我正在按照下面的思路进行思考,在那里我将为该月声明一个变量,但我不确定如何指定该月的 365 天。

set @monthSelected = 8; -- August

SELECT 
    *
FROM
   Reports
WHERE
   month(Fromdate) = @monthSelected
   and Fromdate BETWEEN '2019-08-01' AND DATE_ADD('2019-08-01', INTERVAL 365 DAY)
ORDER BY dateFrom ASC;

这是我想出的,

set @curYear = 2019 ;-- concat("'",Year(now()));
set @monthSelected = '10';

set @dateF = concat(@curYear,'-',@monthSelected,'-01',"'") ;

SELECT 
    *
FROM
    Reports
WHERE
  Fromdate BETWEEN @dateF AND DATE_ADD(@dateF , INTERVAL 365 DAY);

有点粗糙,有点慢,但它似乎有效。我愿意听取其他建议。