2016-05-16 8 views
2

Gibt es eine Möglichkeit für mich, das Jahr der Monate basierend auf dem angegebenen Parameter zu erhalten?Erhalten Jahr Parameterdaten

DECLARE @StartDate DATETIME, 
     @EndDate DATETIME; 

SELECT 
    @StartDate = '2016-02-01', 
    @EndDate = '2017-03-01'; 

SELECT 
    /*is there a way for me to get the year of months based on the parameter dates*/ 
    /*DATEPART(YEAR, DATEADD(YEAR, x.number, @StartDate)) AS Year,*/ 
    DATEPART(MONTH, DATEADD(MONTH, x.number, @StartDate)) AS Month, 
    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) 

enter image description here

Das Ergebnis meiner Abfrage ....

Was ich will, ist, dass von Februar bis Dezember wird es ein Jahr 2016 hat und von Januar bis März es werde habe ein 2017 Jahr ..... basierend auf dem Parameter, den ich gegeben habe ..

Vielen Dank im Voraus.

Antwort

3

Versuchen Sie folgendes:

SELECT YEAR(y.dt) AS Year, 
     MONTH(y.dt) AS Month, 
     DATENAME(MONTH, y.dt) AS MonthName 
FROM master.dbo.spt_values x 
CROSS APPLY (SELECT DATEADD(MONTH, x.number, @StartDate)) AS y(dt) 
WHERE x.type = 'P'   
AND  x.number <= DATEDIFF(MONTH, @StartDate, @EndDate) 

Demo here

+0

Dank Herr, Sie sind eine große Hilfe .... =) –

Verwandte Themen