mysql - mysql中的日期范围
问题描述
我有一个要求,需要从一个特定的月份开始检索数据,但只能检索一年。示例是从 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 天和之后 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);
有点粗略,有点慢,但它似乎正在工作。我愿意听取其他建议。
推荐阅读
- gradle - npm-outdated 的 gradle 等价物是什么?
- regex - 需要我的正则表达式模式以任何顺序在任何提供的文本块中匹配多个术语
- php - CodeIgniter 查询获取位置
- c# - 是否有代码样式选项可以让 Visual Studio 不重新格式化 #pragma 指令?
- mysql - 如何比较选择独特项目的两个结果?
- r - 2个连续变量和一个分类变量
- swift - 在 Xcode 10.2 上的 Swift4.2 中插入 NSManagedObject 后,我会立即收到 Xcode 构建错误
- regexp-substr - 为什么 REGEXP_SUBSTR 读取某些字符(“L”和“RD”)与其他字符不同
- java - 如何创建 n 个子进程,将 m 个元素添加到所有子进程之间的共享列表中?
- reactjs - 我如何为 React Material-UI 所需的 TextField 设置样式