【问题标题】:Year Calculation in SQL Server 2012SQL 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 的输出。但我需要指定分割年份的月份范围。

问候, 万马提

【问题讨论】:

    标签: sql sql-server-2012


    【解决方案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') 
        

        【讨论】:

          猜你喜欢
          • 2019-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多