首页 > 解决方案 > 如何编写在给定日期提取每年数据的查询

问题描述

我有一个查询,我需要在其中提取给定日期的索赔数据,并在该给定日期之前返回每年的数据,例如

我今天有一个索赔: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

标签: sqlsql-serverssms

解决方案


嗯?仅使用日期部分应该会容易得多:

SELECT c.* 
FROM tblClaim c
WHERE c.StatusID = 2 AND
      DAY(c.IncidentDate) = DAY(GETDATE()) AND
      MONTH(c.IncidentDate) = MONTH(GETDATE());

两个注意事项:

  • 当心 2 月 29 日。
  • 这不会使用索引。

推荐阅读