SQL Server 2012中的年度计算

时间:2016-01-05 05:32:38

标签: sql sql-server-2012

StartDate = 01/01/2013 
EndDate = 12/31/2019

我需要获取'2013-14' , '2014-15' , 2015-16之类的年份列,依此类推。

例如,2013 - 14年应包含2013年6月至2014年5月的日期详情。同样明智的我需要将年份提升至结束日期。请帮帮我。

concat(datepart(YY,StartDate),' - ',RIGHT(YEAR(StartDate),2)+ 1)

我使用了上面的格式。我可以得到2013-14的输出。但我需要指定分裂年份的月份范围。

此致 Vanmathi

3 个答案:

答案 0 :(得分:0)

使用FORMAT功能:

SELECT
    FORMAT(StartDate, 'yyyy-MM'),
    FORMAT(EndDate, 'yyyy-MM')

阅读official MSDN documentation pageFORMAT函数的全部内容。

答案 1 :(得分:0)

使用用户定义的函数来分割日期,然后进行文本连接。

CREATE FUNCTION GetSlicedYear(@TheDate date)
RETURNS varchar(7)
AS
BEGIN
    DECLARE @SlicedYear varchar(7)  
    IF DATEPART(month, @TheDate) < 6
        SELECT @SlicedYear = (DATEPART(year, @TheDate) -1 ) +"-"+ RIGHT(CAST(YEAR(@TheDate) As varchar(4)),2)
    ELSE
        SELECT @SlicedYear = DATEPART(year, @TheDate) +"-"+ RIGHT(CAST((YEAR(@TheDate) +1) As varchar(4)),2)
    RETURN @SlicedYear
END

然后是订购(或团体)这样的事情。

 SELECT SomeField, GetSlicedYear(SomeDate) FROM SomeTable ORDER BY GetSlicedYear(SomeDate)

答案 2 :(得分:0)

您可以使用以下选择语句 -

select FORMAT(StartDate , 'yyyy') + '-' + FORMAT(EndDate , 'yyyy')