SQL Server 2012 中的年份计算
Posted
技术标签:
【中文标题】SQL Server 2012 中的年份计算【英文标题】:Year Calculation in SQL Server 2012 【发布时间】:2016-01-05 05:32:38 【问题描述】: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 的输出。但我需要指定分割年份的月份范围。
问候, 万马提
【问题讨论】:
【参考方案1】:使用FORMAT
函数:
SELECT
FORMAT(StartDate, 'yyyy-MM'),
FORMAT(EndDate, 'yyyy-MM')
在official MSDN documentation page 上阅读有关FORMAT
函数的所有信息。
【讨论】:
【参考方案2】:使用用户定义的函数来分割日期,然后进行文本连接。
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)
【讨论】:
【参考方案3】:您可以使用下面的选择语句 -
select FORMAT(StartDate , 'yyyy') + '-' + FORMAT(EndDate , 'yyyy')
【讨论】:
以上是关于SQL Server 2012 中的年份计算的主要内容,如果未能解决你的问题,请参考以下文章