将datetime列转换为' MMM YYYY"最简单的T-SQL语法是什么?格式?

时间:2016-05-02 10:03:23

标签: sql sql-server tsql date datetime

我正在使用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

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

4 个答案:

答案 0 :(得分:2)

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

Format(StayDate, "MMM yyyy")

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

答案 1 :(得分:0)

试试这个

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) 

答案 2 :(得分:0)

您也可以尝试以下查询来实现相同的

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

这将返回May2016

介于两者之间的空间

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

结果:May 2016

答案 3 :(得分:0)

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

extendedEdges