CONCAT列没有子查询SQL Server

问题描述 投票:0回答:3

我想看看这个查询是否有更好的方法

日期字段已格式化 - 06-03-2018

我需要一个看起来像例如的列3月18日,例如

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

这给了我想要的结果,但我想知道是否还有没有子查询得到相同的结果。谢谢

sql sql-server tsql subquery concat
3个回答
1
投票

为什么不将日期格式化为

select format(convert(date, '06-03-2018', 103), 'MMM-yy')

1
投票

您提供的查询无效,您需要在列声明之间使用逗号(,)(您缺少它)。

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

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

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


0
投票

你可以直接进行连接

SELECT 
    CAST(LEFT(datename(MONTH, [Date]), 3) AS VARCHAR(20))
    +'-'+
    CAST(RIGHT(YEAR([Date]), 2) AS VARCHAR(20))
    FROM Table1;
© www.soinside.com 2019 - 2024. All rights reserved.