日期范围 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);
有点粗糙,有点慢,但它似乎有效。我愿意听取其他建议。
我有一个要求,需要从特定月份开始检索数据,但仅限于几年。示例是从 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);
有点粗糙,有点慢,但它似乎有效。我愿意听取其他建议。