sql - SQL中按月获取所有记录
问题描述
我正在尝试从显示未来 90 天记录的视图中提取记录。我需要一种方法来仅按月提取这些记录。我需要它,因为并非所有月份都包含 30 天。这是一个示例,显示了今天和未来 30 天的记录。
select *
from [dbo].[vPolicy_Renewal_90DayLookUp] AS PRD
where PRD.ExpDate BETWEEN GETDATE() AND DATEADD(DD, 30, GETDATE())
order by PRD.ExpDate
这将获取今天和接下来 30 天的所有记录,但是,我想要一种方法来捕获当月的所有记录。由于是 11 月,前 5 天和本月剩余时间。
解决方案
这是当前月份的查询:
SELECT *
FROM [dbo].[vPolicy_Renewal_90DayLookUp] AS PRD
WHERE
PRD.ExpDate >= DATEADD(mm, DATEDIFF(mm, 0, @mydate), 0) AND
PRD.ExpDate < DATEADD(mm, 1, DATEADD(mm, DATEDIFF(mm, 0, @mydate), 0));
第二个月,使用这个WHERE
子句:
WHERE
PRD.ExpDate >= DATEADD(mm, 1, DATEADD(mm, DATEDIFF(mm, 0, @mydate), 0)) AND
PRD.ExpDate < DATEADD(mm, 2, DATEADD(mm, DATEDIFF(mm, 0, @mydate), 0));
并在第三个月及以后的几个月中继续这种方式。如果您只想对当前和接下来的两个月进行一次查询,请使用以下命令:
SELECT *
FROM [dbo].[vPolicy_Renewal_90DayLookUp] AS PRD
WHERE
PRD.ExpDate >= DATEADD(mm, DATEDIFF(mm, 0, @mydate), 0) AND
PRD.ExpDate < DATEADD(mm, 3, DATEADD(mm, DATEDIFF(mm, 0, @mydate), 0))
ORDER BY
PRD.ExpDate;
您应该在不同的块中看到三个月中的每个月,从最早的记录到最新的记录。
推荐阅读
- typescript - Webpack ts-loader`找不到模块:错误:无法解析`
- angular - 无法读取 NgbTypeahead 中未定义的属性“管道”
- python - 从二进制文件读取的不同行为
- python - 使用 pypyodbc 对列名进行 SQL Server 编码
- python - Coco 类型数据集的评估返回错误
- c# - 将 FileSystemWatcher 与具有 FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS 的文件一起使用
- python - Python append 从列表中删除元素
- java - 在java中查找多个日期间隔之间的差异
- vue.js - nuxt 在点击 this.$auth.fetchUser() 后获取用户名
- datatable - 从 SLT 表中删除部分数据