我有一个日期表,其中包括每天作为@startDate和@endDate之间的单独行。
除了与@dayOfMonth匹配的日期之外,我需要删除所有日期,例如16日作为示例。
但是我不需要保留每个月的第16行。我必须考虑另一个变量@everyNMonths。因此,如果@everyNMonths设置为2,而我的@startDate为'2016-10-13'且@endDate为'2017-03-20',我希望保留:
2016-10-16
2016-12-16
2017-02-16
不确定我是如何做到这一点的。谢谢你的帮助。
答案 0 :(得分:0)
这应该有效:
DECLARE @StartTime DATE = '2015-11-01'
DECLARE @EndTime DATE = '2016-10-01'
DECLARE @Interval INT = 1
DECLARE @dayOfMonth INT = 16
--CREATE Table #TempTimes
SELECT StartTime
FROM
(
SELECT StartTime,ROW_NUMBER() OVER (ORDER BY StartTime) As Num
FROM
(
SELECT DISTINCT StartTime
FROM #TempTimes
WHERE DATEPART(DD,StartTime) = @dayOfMonth
AND StartTime BETWEEN @StartTime AND @EndTime
)t
)s
WHERE (Num - 1)%@Interval = 0