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

时间:2011-04-13 14:24:56

标签: sql sql-server-2008 type-conversion

使用SQL Server 2008,我有一个用于创建视图的查询,我正在尝试显示月份名称而不是整数。

在我的数据库中,datetime位于名为OrderDateTime的列中。返回日期的查询中的行是:

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'附近的语法错误

消息。我的查询的正确语法是什么?

12 个答案:

答案 0 :(得分:142)

这将为您提供月份的全名。

select datename(month, S0.OrderDateTime)

如果您只想要前三个字母,可以使用此

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

答案 1 :(得分:17)

您是否尝试过DATENAME(MONTH, S0.OrderDateTime)

答案 2 :(得分:12)

变化:

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

要:

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

答案 3 :(得分:7)

试试这个:

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

答案 4 :(得分:2)

从表名

中选择SUBSTRING (convert(varchar,S0.OrderDateTime,100),1,3)

答案 5 :(得分:2)

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

答案 6 :(得分:1)

这将为您提供您的要求:

select convert(varchar(3),datename(month, S0.OrderDateTime)) 

答案 7 :(得分:1)

SELECT MONTHNAME( `col1` ) FROM `table_name` 

答案 8 :(得分:0)

如果没有点击数据库,我们可以获取所有月份名称。

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

答案 9 :(得分:0)

基本上这个......

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)

答案 10 :(得分:0)

DECLARE @iMonth INT=12
SELECT CHOOSE(@iMonth,'JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUNE','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER')

答案 11 :(得分:0)

对我来说,由于公司的限制,无法访问DATENAME...。但这也非常容易。

sequelize.define('users')