由於您的日期字符串在yyyy-mm
格式你可以使用<> =進行字符串比較。你只需要當前日期轉換爲varchar(7)使用樣式126(YYYY-MM-DDTHH:MI:ss.mmm)
對於實例
DECLARE @CurrentDate DATETIME = GETDATE()
DECLARE @XMonthsAgo INT = 3
DECLARE @Dates TABLE ([date] varchar(7))
INSERT INTO @Dates VALUES
('2015-09'),('2015-08'),('2015-07'),('2015-06'),('2015-05'),('2015-04'),('2015-03'),
('2015-02'),('2015-01'),('2014-12'),('2014-11'),('2014-10'),('2014-09'),('2014-08'),
('2014-07'),('2014-06'),('2014-05'),('2014-04'),('2014-03'),('2014-02'),('2014-01')
SELECT *
FROM @Dates d
WHERE [date] >= CONVERT(VARCHAR(7), DATEADD(month, [email protected], @CurrentDate), 126)
AND [date] < CONVERT(VARCHAR(7), @CurrentDate, 126)
結果
date
----
2015-07
2015-06
2015-05
NO你根本不想這樣做。你想使用DATEADD。當日期> DATEADD(月,-3,GETDATE()) –
@SeanLange它會工作只有當日期列的類型是日期或日期時間,並通過查看數據時,它似乎並不像 – Sagar
@SeanLange這將忽略在今天的日期之前的任何日期。 –