-1

我想要两个日期之间的唯一月份,例如

@StartDate = '04-05-2013'
@EndDate = '26-12-2013'

我想要像这样的输出

5 6 7 8 9 10 11 12

我还想使用带有上述输出的游标如何使用 sql server 来获取它

4

2 回答 2

1

一般来说,您可以使用如下脚本来获取您要查找的值。我不明白你是否需要一个结果集,所以脚本每个月只返回一个结果集:随意修改它,即使将代码与你的(现有?)光标混合 -相关脚本:

DECLARE @StartDate datetime = '2013-05-04' 
DECLARE @EndDate datetime = '2013-12-26'

WHILE (@StartDate < @EndDate)
BEGIN
    SELECT MONTH(@StartDate)

    SET @StartDate = DATEADD(month, 1, @StartDate)
END

另请注意,这是一个起点:出于性能原因,您可能希望以某种方式考虑查看整个查询。

于 2013-10-31T07:11:24.153 回答
1

如果您只需要月份数,那么您可以获取两个日期之间的月份差并将其递增以获得如下所示的结果:

DECLARE @StartDateMonth int = DATEPART(mm, '2013-05-04') 
DECLARE @EndDateMonth int =  DATEPART(mm,'2013-12-26')

WHILE (@StartDateMonth <= @EndDateMonth )
BEGIN
    SELECT @StartDateMonth
    SET @StartDateMonth = @StartDateMonth + 1

END
于 2013-10-31T07:26:40.567 回答