Obtenir l'année des dates du paramètre

Y a-t-il un moyen pour moi d'get l'année des mois en fonction du paramètre donné?

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) 

entrez la description de l'image ici

Le résultat de ma requête ….

Ce que je veux c'est que de février à décembre il y aura une année de 2016 et de janvier à mars il y aura une année 2017 ….. en fonction du paramètre que j'ai donné ..

Merci d'avance.

Essaye ça:

 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) 

Démo ici