在SQL Server查询中返回月份名称

使用SQL Server 2008,我有一个查询是用来创build一个视图,我试图显示一个月的名字,而不是一个整数。

在我的数据库中,date时间位于名为OrderDateTime的列中。 查询中返回date的行是:

DATENAME(yyyy, S0.OrderDateTime) AS OrderYear, DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth 

这将返回一个年份列和一个月份列作为整数。 我想返回月份名称(1月,2月等)。 我试过了:

 CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth 

这显然是不正确的,因为我得到“附近的语法不正确”的消息。 什么是我的查询正确的语法?

这会给你这个月的全名。

 select datename(month, S0.OrderDateTime) 

如果你只想要前三个字母,你可以使用这个

 select convert(char(3), S0.OrderDateTime, 0) 

你有没有试过DATENAME(MONTH, S0.OrderDateTime)

更改:

 CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth 

至:

 CONVERT(varchar(3), DATENAME(MONTH, S0.OrderDateTime)) AS OrderMonth 

尝试这个:

 SELECT LEFT(DATENAME(MONTH,Getdate()),3) 

从表名称中selectSUBSTRING (convert(varchar,S0.OrderDateTime,100),1,3)

在SQL Server 2012中,可以使用FORMAT(@mydate, 'MMMM') AS MonthName

这会给你你所要求的:

 select convert(varchar(3),datename(month, S0.OrderDateTime)) 
 SELECT MONTHNAME( `col1` ) FROM `table_name` 

没有数据库我们可以取所有月份的名字。

 WITH CTE_Sample1 AS ( Select 0 as MonthNumber UNION ALL select MonthNumber+1 FROM CTE_Sample1 WHERE MonthNumber+1<12 ) Select DateName( month , DateAdd( month , MonthNumber ,0 ) ) from CTE_Sample1 

基本上这个…

 declare @currentdate datetime = getdate() select left(datename(month,DATEADD(MONTH, -1, GETDATE())),3) union all select left(datename(month,(DATEADD(MONTH, -2, GETDATE()))),3) union all select left(datename(month,(DATEADD(MONTH, -3, GETDATE()))),3)