想要使用 sql 服务器查找两个日期之间的可用月份



我想要两个日期之间的唯一月份喜欢

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

我想要这样的输出

5 6 7 8 9 10 11 12

我还想使用带有上述输出的光标如何使用sql服务器获取它

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

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

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

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

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

最新更新