Возвращаемое имя месяца в запросе SQL Server

Используя SQL Server 2008, у меня есть запрос, который используется для создания представления, и я пытаюсь отобразить название месяца вместо целого числа.

В моей базе данных datetime находится в столбце с именем OrderDateTime. Строки в запросе, которые возвращают дату:

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

Это возвращает столбец лет и столбец месяцев как целые числа. Я хочу вернуть названия месяцев (Jan, Feb, etc. (Jan, Feb, etc). Я пробовал:

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

Это явно неверно, так как я получаю

Неверный синтаксис рядом с 'AS'

сообщение. Каков правильный синтаксис для моего запроса?

Ответ 1

Это даст вам полное имя месяца.

select datename(month, S0.OrderDateTime)

Если вы хотите только первые три буквы, вы можете использовать этот

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

Ответ 2

Вы пробовали DATENAME(MONTH, S0.OrderDateTime)?

Ответ 3

Изменить:

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

To:

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

Ответ 4

Попробуйте следующее:

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

Ответ 5

Выберите SUBSTRING (convert(varchar,S0.OrderDateTime,100),1,3) из имени таблицы

Ответ 6

В SQL Server 2012 можно использовать FORMAT(@mydate, 'MMMM') AS MonthName

Ответ 7

Это даст вам то, о чем вы запрашиваете:

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

Ответ 8

SELECT MONTHNAME( `col1` ) FROM `table_name` 

Ответ 9

Без удара db мы можем получить имя месяца.

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

Ответ 10

в основном это...

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)

Ответ 11

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