2013-10-16 41 views
1

我有四个变量CurrentMonth,CurrentYear,一个月,一年之间既月份和年份。我想要一个SQL语句显示(Month,Year)到(currentMonth,CurrentYear)之间的所有月份和年份。下面显示的月份,但我需要几个月和一年,我没有日期,但只有开始和结束的月和年。SQL语句显示两个日期

DECLARE @StartDate DATETIME, 
     @EndDate DATETIME; 

SELECT @StartDate = '20110501'   
     ,@EndDate = '20110801'; 


SELECT DATENAME(MONTH, DATEADD(MONTH, x.number, @StartDate)) AS MonthName 
FROM master.dbo.spt_values x 
WHERE x.type = 'P'   
AND  x.number <= DATEDIFF(MONTH, @StartDate, @EndDate); 
+0

我的问题是不是日期之间,但2年,月 – Aditya

+0

在重复的解决方案将工作之间,你只需要返工it.'Hint' - 改变'day'到'月/ year' – Elias

回答

3

这是对上一个答案的修改,以满足您的月/年需求。

DECLARE @FromMonth varchar(2), @FromYear varchar(4), @ToMonth as Varchar(2), @ToYear as varchar(4) 
    SET @FromMonth = '01'; 
    SET @FromYear = '1944'; 
    SET @ToMonth = '04'; 
    SET @ToYear = '1956'; 


    DECLARE @DateFrom smalldatetime, @DateTo smalldatetime; 
    SET @[email protected][email protected]+'01'; 
    SET @[email protected][email protected]+'01'; 
    ------------------------------- 
    WITH T(date) 
    AS 
    ( 
    SELECT @DateFrom 
    UNION ALL 
    SELECT DateAdd(month,1,T.date) FROM T WHERE T.date < @DateTo 
    ) 

    SELECT datename(m,date) + '-' + datename(yy,date) as DN FROM T 
    OPTION (MAXRECURSION 32767); 
+0

但我没有确切日期的数据。我只有月和年。 – Aditya

+0

我稍微修改了tsql示例以使用月份和年份 – bsivel