没有子查询的 CONCAT 列 SQL 服务器
CONCAT columns without sub-query SQL Server
我想看看是否有更好的方法来处理这个查询
日期字段的格式为 - 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
这给了我想要的结果,但我想知道是否有没有子查询也能得到相同的结果。谢谢
可以直接拼接
SELECT
CAST(LEFT(datename(MONTH, [Date]), 3) AS VARCHAR(20))
+'-'+
CAST(RIGHT(YEAR([Date]), 2) AS VARCHAR(20))
FROM Table1;
为什么不将日期格式化为
select format(convert(date, '06-03-2018', 103), 'MMM-yy')
您提供的查询无效,您需要在列声明(您缺少的。
之间使用逗号 (,
)
无论如何,查询可以简化为:
SELECT LEFT(DATENAME(MONTH,[Date]),3) + '-' + RIGHT(YEAR([Date]),2) AS [Month-Year]
FROM Table1;
我没有在这里使用 CONCAT
,因为没有必要(因为两个值都是 NULL
或有一个值)。
我想看看是否有更好的方法来处理这个查询
日期字段的格式为 - 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
这给了我想要的结果,但我想知道是否有没有子查询也能得到相同的结果。谢谢
可以直接拼接
SELECT
CAST(LEFT(datename(MONTH, [Date]), 3) AS VARCHAR(20))
+'-'+
CAST(RIGHT(YEAR([Date]), 2) AS VARCHAR(20))
FROM Table1;
为什么不将日期格式化为
select format(convert(date, '06-03-2018', 103), 'MMM-yy')
您提供的查询无效,您需要在列声明(您缺少的。
之间使用逗号 (,
)
无论如何,查询可以简化为:
SELECT LEFT(DATENAME(MONTH,[Date]),3) + '-' + RIGHT(YEAR([Date]),2) AS [Month-Year]
FROM Table1;
我没有在这里使用 CONCAT
,因为没有必要(因为两个值都是 NULL
或有一个值)。