Преобразование номера месяца в функцию имени месяца в SQL - PullRequest
196 голосов
/ 09 октября 2008

В SQL Server месяцы хранятся как 1,2,3,4, ... 12. Я хотел бы отобразить их как январь, февраль и т. Д. Есть ли в SQL Server такая функция, как MonthName (1) = январь? Я пытаюсь избежать заявления CASE, если это возможно.

Ответы [ 31 ]

246 голосов
/ 09 октября 2008

Я думаю, что это лучший способ получить название месяца , когда у вас есть номер месяца

Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )

или

Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )
149 голосов
/ 09 октября 2008

Немного хакерский, но должен работать:

SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))
90 голосов
/ 29 июня 2010
SELECT DATENAME(month, GETDATE()) AS 'Month Name'
63 голосов
/ 22 ноября 2011
SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)
30 голосов
/ 13 августа 2013

Используйте лучший способ

Select DateName( month , DateAdd( month , @MonthNumber , -1 ))
21 голосов
/ 26 января 2017

Это очень просто.

select DATENAME(month, getdate())

выход: январь

5 голосов
/ 15 июля 2011

в дополнение к оригиналу

SELECT DATENAME(m, str(2) + '/1/2011')

Вы можете сделать это

SELECT DATENAME(m, str([column_name]) + '/1/2011')

так вы получите имена для всех строк в таблице. где [column_name] представляет целочисленный столбец, содержащий числовое значение от 1 до 12

2 представляет любое целое число, по строке контакта я создал дату, где я могу извлечь месяц. «/ 1/2011» может быть любой датой

если вы хотите сделать это с переменной

DECLARE @integer int;

SET @integer = 6;

SELECT DATENAME(m, str(@integer) + '/1/2011')
5 голосов
/ 09 марта 2009

Вы можете использовать встроенную CONVERT функцию

select CONVERT(varchar(3), Date, 100)  as Month from MyTable.

Здесь будут отображаться первые 3 символа месяца (январь, февраль и т. Д.)

5 голосов
/ 23 февраля 2015

Используйте этот оператор для преобразования числового значения месяца в название месяца.

SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))
5 голосов
/ 26 февраля 2013

У меня работает следующее:

CAST(GETDATE() AS CHAR(3))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...