【发布时间】:2018-08-14 04:07:00
【问题描述】:
我想看看是否有更好的方法来处理这个查询
日期字段的格式为 - 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
这给了我想要的结果,但我想知道是否无论如何都可以在没有子查询的情况下获得相同的结果。谢谢
【问题讨论】:
-
您不需要子查询或
datename等。您可以使用FORMAT 格式化值,例如日期时间或CONVERT,在旧版本的SQL Server 中带有格式代码。即使您想使用DATENAME,您也可以将所有内容放在一个 SELECT 中 -
select format(getdate(),'MMM-yy')就够了 -
顺便说一句,格式化日期的最佳位置是 客户端,而不是查询。 很多在控件或报表的 Format 属性上指定所需的格式、文化(即语言)等更加容易和快捷
-
在数据库中格式化最快的选项可能是根本不这样做。创建一个日历表,其中包含月份名称、年份或您要在报告中使用的任何格式的额外列。这将允许报告工具按格式化值过滤
标签: sql sql-server tsql subquery concat