SQL Server — преобразование номера месяца в функцию имени месяца в SQL

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

193

Решение

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

SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))
148

Другие решения

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

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

Или же

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

SELECT DATENAME(month, GETDATE()) AS 'Month Name'
89

SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)
63

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

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

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

select DATENAME(month, getdate())

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

20

Следующие работы для меня:

CAST(GETDATE() AS CHAR(3))
6

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

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
По вопросам рекламы [email protected]