【问题标题】:What is the most simple T-SQL syntax to convert a datetime column into the 'MMM YYYY" format?将日期时间列转换为“MMM YYYY”格式的最简单的 T-SQL 语法是什么?
【发布时间】:2016-05-02 10:03:23
【问题描述】:

我使用的是 SQL Server 2014,我需要在我的 SQL 查询中添加一行,它将名为 StayDate 的列转换为“MMM YYYY”格式。 StayDate 列采用datetime 格式(例如:2016-06-01 00:00:00.000)

基本上,我需要输出为“2016 年 7 月”(来自上面的示例)。

我尝试过使用以下代码:

Format (StayDate, "MMM DD YYYY")

我转换成:Format (StayDate, "MMM YYYY")

但我最终得到以下结果:Jul YYYY

我非常喜欢上面代码的简洁性。是否有使用Formatsyntax 的解决方法?

【问题讨论】:

    标签: sql sql-server tsql date datetime


    【解决方案1】:

    format 函数采用 .NET 格式字符串,因此四位数年份部分必须小写,如下所示:

    Format(StayDate, "MMM yyyy")
    

    (参考:https://msdn.microsoft.com/de-de/library/hh213505(v=sql.120).aspx

    【讨论】:

    • 谢谢!太棒了!
    【解决方案2】:

    试试这个

    DECLARE @SYSDATE DATETIME = '2016-06-01 00:00:00.000'
    
    SELECT RIGHT(CONVERT(VARCHAR(11), @SYSDATE, 106) ,8)
    --OR
    SELECT LEFT(DATENAME(MONTH, @SYSDATE), 3) + ' ' + DATENAME(YEAR, @SYSDATE) 
    

    【讨论】:

      【解决方案3】:

      你也可以尝试下面的查询来达到同样的效果

      SELECT DATENAME(MONTH, GETDATE()) + DATENAME(YEAR, GETDATE())
      

      这将返回May2016

      中间有空格

      SELECT DATENAME(MONTH, GETDATE()) +' ' + DATENAME(YEAR, GETDATE())
      

      结果:May 2016

      【讨论】:

        【解决方案4】:

        使用下面的查询将返回您的预期结果:

        DECLARE @StayDate AS DATETIME = '2016-06-01 00:00:00.000';
        SELECT SUBSTRING(CONVERT(VARCHAR(11), @StayDate, 113), 4, 8) AS [Mon YYYY]
        

        【讨论】:

          猜你喜欢
          • 2013-11-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多