在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)