2013-10-16 46 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