У меня есть таблица SQL, которая имеет два столбца, и мне нужны для сценария для печати месяца на основе диапазона для него, чтобы вернуться.

Пример: если диапазон 8 и текущий месяц - июнь, то он должен вернуть октябрь

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

Таблице:

MonthNum    Month
1           Jan
2           Feb
3           Mar
4           Apr
5           May
6           Jun
7           Jul
8           Aug
9           Sep
10          Oct
11          Nov
12          Dec

Текущий код:

DECLARE @Month AS VARCHAR(100)
DECLARE @MONTHTXT AS VARCHAR(100)
DECLARE @GETMONTH AS VARCHAR(100)

/* Change the rnage for which month to select*/
SET @GETMONTH= (Select 1 as Range)

/*Get the desired month*/
SET @Month= (Select (MONTH(GETDATE())) - 1 as 'Month')

/*Convert the value to the correct text for the month*/
SET @MONTHTXT = (Select
                    CASE
                        WHEN @MONTH = '1' THEN 'Jan'
                        WHEN @MONTH = '2' THEN 'Feb'
                        WHEN @MONTH = '3' THEN 'Mar'
                        WHEN @MONTH = '4' THEN 'Apr'
                        WHEN @MONTH = '5' THEN 'May'
                        WHEN @MONTH = '6' THEN 'Jun'
                        WHEN @MONTH = '7' THEN 'Jul'
                        WHEN @MONTH = '8' THEN 'Aug'
                        WHEN @MONTH = '9' THEN 'Sep'
                        WHEN @MONTH = '10' THEN 'Oct'
                        WHEN @MONTH = '11' THEN 'Nov'
                        WHEN @MONTH = '12' THEN 'Dec'
                        ELSE 'N/A'
                        End As 'Month'
                )
                
Print @MONTHTXT
0
texnoob 7 Июн 2021 в 20:36

2 ответа

Лучший ответ

Почему бы вам не просто использовать встроенные функции?

select datename(month, dateadd(month, -8, getdate()))
0
Gordon Linoff 7 Июн 2021 в 17:48

Вы можете использовать это, чтобы получить дату

Select FORMAT(DATEADD(month, @Range, GETDATE()), 'MMM', 'es-es') as 'Month'

Выражение "dateAddd (месяц, @range, getdate ())"

Затем с форматом получить месяц в строке

С примером, где диапазон = -1

Select FORMAT(DATEADD(month, -1, GETDATE()), 'MMM', 'es-es') as 'Month'

Результат должен быть месяц = 'may'

0
joserobertog 7 Июн 2021 в 18:02