【发布时间】:2020-12-13 13:14:14
【问题描述】:
我有一个要求,即需要从特定月份开始检索数据,但仅检索一年。示例是从 2019 年 8 月 1 日到一年后的所有数据,即 2020 年 8 月 1 日。月份值可能会有所不同,因此在本示例中是 8 月,但也可能是 5 月或 9 月。
SELECT
*
FROM
Reports
WHERE
Fromdate BETWEEN '2019-08-01' AND DATE_ADD('2019-08-01', INTERVAL 365 DAY)
ORDER BY dateFrom ASC;
between 只会在 2019 年之后获取 2019 天和 365 天的数据。我应该如何将选择标准放在 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;
【问题讨论】: