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

| 使用
SQL Server 2008
,我有一个用于创建视图的查询,并且我试图显示月份名称而不是整数。 在我的数据库中,
datetime
在called2ѭ列中。查询中返回日期的行是:
DATENAME(yyyy, S0.OrderDateTime) AS OrderYear,
DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth
这将返回年份列和月份列作为整数。我想返回月份名称
(Jan, Feb, etc
)。我试过了:
CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth
这显然是不正确的,因为我得到   \'AS \'附近的语法不正确 信息。查询的正确语法是什么?     
已邀请:
这将为您提供月份的全名。
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)
    
从表名称中选择“ 12”     
在SQL Server 2012中,可以使用ѭ13     
这将为您提供您所要求的:
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)
    
DECLARE @iMonth INT=12
SELECT CHOOSE(@iMonth,\'JANUARY\',\'FEBRUARY\',\'MARCH\',\'APRIL\',\'MAY\',\'JUNE\',\'JULY\',\'AUGUST\',\'SEPTEMBER\',\'OCTOBER\',\'NOVEMBER\',\'DECEMBER\')
    

要回复问题请先登录注册