2016-05-16 78 views
2

根据给定的参数,我有办法获取月份的年份吗?获取参数日期的年份

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

我查询的结果....

我想的是,从二月至十二月这将有2016一年一月至三月,它会有2017年.....根据我给的参数..

在此先感谢。

回答

3

试试这个:

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

感谢主席先生,你是一个很大的帮助.... =) –

相关问题