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

时间:2013-10-31 06:56:59

标签: sql-server-2008

我希望两个日期之间的唯一月份 喜欢

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

我希望输出像

5 6 7 8 9 10 11 12

我还想使用上面输出的游标如何使用sql server

来获取它

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分: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