sql - 如何编写在给定日期提取每年数据的查询
问题描述
我有一个查询,我需要在其中提取给定日期的索赔数据,并在该给定日期之前返回每年的数据,例如
我今天有一个索赔:2019 年 1 月 15 日
我希望能够在一个通用查询中提取所有其他年份,因为这将是一个存储过程。
这将允许我查看过去几年的特定日期是否有索赔。
如果我要创建一个变量或案例语句,我可以分别做 1 年、2 年、3 年,但有没有办法以更简单的方式完成这一切?
这是1年前的代码:
SELECT * FROM tblClaim c
WHERE c.IncidentDate = DATEadd(year, -1, CAST(FLOOR( CAST(GETDATE() AS FLOAT)) AS DATETIME)) AND c.StatusID = 2
解决方案
嗯?仅使用日期部分应该会容易得多:
SELECT c.*
FROM tblClaim c
WHERE c.StatusID = 2 AND
DAY(c.IncidentDate) = DAY(GETDATE()) AND
MONTH(c.IncidentDate) = MONTH(GETDATE());
两个注意事项:
- 当心 2 月 29 日。
- 这不会使用索引。
推荐阅读
- reporting-services - 使用从 SQL Server 到 Sybase 的 openquery 将 SSRS 参数注入
- r - 如何在 R 中获取 Shapefile 的边框
- eclipse - Azure Toolkit for Eclipse“登录”不起作用
- vba - VBA 和 Windows 服务 (VB.Net) 之间的 Trim 有何不同?
- sql - SQL中的拆分列
- json - 无名 JSON 有效负载的 JSON_VALUE
- python - 使用 'in' 来检查一个单词是否是列表中项目的一部分
- terminal - 在 Raspberry Pi 上从我的桌面运行脚本的问题
- arcgis-js-api - 任何人都有为 ESRI JSAPI SDK 生成服务器端令牌的解决方案?
- r - 将粘贴表从 .docx 复制到 R 作为数据框?