sql - 如何编写一个查询来提取每年给定日期的数据

标签 sql sql-server ssms

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

我今天提出 claim :2019 年 1 月 15 日

我希望能够在一个通用查询中提取所有其他年份,因为这将是一个存储过程。

这将允许我查看过去几年中指定日期是否有 claim 。

如果我要创建变量或 case 语句,我可以分别执行 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 日。
  • 这不会使用索引。

关于sql - 如何编写一个查询来提取每年给定日期的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54207042/

相关文章:

返回更新记录的 SQL Server 存储过程

C# 定时器填充数据库

sql - 根据结果​​对列进行分组

Azure - 使用 Transact-SQL 和 SSMS 将现有 SQL 数据库复制到另一台服务器

sql - 随SQL Server驱动程序一起无法成功连接,登录失败

sql - 选择总和 HH :MM for period between two dates

sql - 根据oracle sql中其他表中的计数重新启动行号

sql-server - SQL Server 2008如何同步不同服务器的数据库?

windows - 在 Management Studio 中查看最近的文件

azure-sql-database - 使用 Azure SQL DB 进行 SSMS Active Directory 身份验证