您可以使用DATE
在您的WHERE
子句中构造 a DATEFROMPARTS
,然后为您的比较日期添加一个额外的变量,以避免在WHERE
子句中重新输入它。
DECLARE @current_month INT = 1
,@current_year INT = 2019
DECLARE @compDate DATE = DATEFROMPARTS(@current_year,@current_month,DAY(GETDATE()))
SELECT
*
FROM @t
WHERE
DATEFROMPARTS(current_year,current_month,DAY(GETDATE())) >= DATEADD(MONTH, -7, @compDate)
AND
DATEFROMPARTS(current_year,current_month,DAY(GETDATE())) < @compDate
结果:
+---------------+--------------+
| current_month | current_year |
+---------------+--------------+
| 6 | 2018 |
| 7 | 2018 |
| 8 | 2018 |
| 9 | 2018 |
| 10 | 2018 |
| 11 | 2018 |
| 12 | 2018 |
+---------------+--------------+
这是为测试设置的表格:
DECLARE @t TABLE
(
current_month INT NOT NULL,
current_year INT NOT NULL
);
INSERT @t
(
current_month
,current_year
)
VALUES
(1, 2018),
(2, 2018),
(3, 2018),
(4, 2018),
(5, 2018),
(6, 2018),
(7, 2018),
(8, 2018),
(9, 2018),
(10, 2018),
(11, 2018),
(12, 2018),
(1, 2019),
(2, 2019),
(3, 2019);