Вы можете создать DATE
в своем предложении WHERE
, используя 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);