代码之家  ›  专栏  ›  技术社区  ›  Ryan Gadsdon

无子查询SQL Server的CONCAT列

  •  0
  • Ryan Gadsdon  · 技术社区  · 8 年前

    我想看看是否有更好的方法来解决这个问题

    日期字段的格式为:2018年3月6日

    我需要一个类似于3月18日的专栏 e、 g级

    SELECT
    CONCAT(P.[Month] + '-', p.[Year]) AS [Month-Year]
    FROM
    (
    SELECT 
    left(datename(MONTH,[Date]),3) AS [Month]
    ,right(YEAR([Date]),2) AS [Year]
    FROM
    Table1
    )P
    

    这给了我想要的结果,但我想知道是否有任何方法可以在没有子查询的情况下获得相同的结果。谢谢

    3 回复  |  直到 8 年前
        1
  •  1
  •   Yogesh Sharma    8 年前

    为什么不将日期格式化为

    select format(convert(date, '06-03-2018', 103), 'MMM-yy')
    
        2
  •  1
  •   Thom A    8 年前

    您提供的查询无效,需要逗号( , )列之间的声明(您缺少这些声明)。

    无论如何,查询可以简化为:

    SELECT LEFT(DATENAME(MONTH,[Date]),3) + '-' + RIGHT(YEAR([Date]),2) AS [Month-Year]
    FROM Table1;
    

    我没用过 CONCAT 这里,因为没有必要(因为两个值都是 NULL 或具有值)。

        3
  •  0
  •   Jayasurya Satheesh    8 年前

    您可以直接进行连接

    SELECT 
        CAST(LEFT(datename(MONTH, [Date]), 3) AS VARCHAR(20))
        +'-'+
        CAST(RIGHT(YEAR([Date]), 2) AS VARCHAR(20))
        FROM Table1;