首页 > 解决方案 > SQL中如何拉取过去两年的数据,而不是当月的数据

问题描述

我正在尝试从过去的一个月中提取过去两年的数据(不考虑当前月份)。因此,它将提取从 2021 年 9 月 30 日开始的所有 2 年数据。我尝试了以下方法,但 2020 年 9 月之后的几个月被删除:

WHERE YEAR(ACCDAT_0) >= (YEAR(GETDATE()) -2) AND MONTH(ACCDAT_0) < MONTH(dateadd(dd, -1, GetDate()))

标签: sqlsql-server

解决方案


DECLARE @d date = GETDATE();
SET @d = DATEFROMPARTS(YEAR(@d), MONTH(@d), 1);

SELECT ... WHERE ACCDAT_0 >= DATEADD(YEAR, -2, @d)
             AND ACCDAT_0 <  @d;
  • 这里有几篇有用的日期文章,包括为什么你想要范围查询而不是像这样的东西YEAR(column)负责任地约会

推荐阅读