Можете да използвате T-SQL кода по-долу, за да преобразувате номер на месец в съответното му име в SQL Server.
Това е за моменти, когато всъщност нямате пълната дата - когато всичко, което имате, е номерът на месеца. Ако направите имате датата, след което ето как да получите името на месеца от дата.
Пример
Можете да получите името на месеца от съответния номер, като използвате DATENAME()
функция във връзка с DATEADD()
.
Ето пример, който използва месец 10 (октомври):
SELECT DATENAME(
month,
DATEADD( month , 10, -1 )
);
Резултат:
October
Обяснение на кода
Ако се чудите защо има -1
в горния код, защото основната дата е 1900-01-01 (добре, 1900-01-01 00:00:00.000 за да бъдем точни).
Ако добавим 10 към 01, тогава получаваме 11, което е ноември (грешен месец). Следователно трябва да го извадим с 1.
Следният пример трябва да илюстрира това по-добре от думите ми. Ето различни DATEADD()
стойности, които се връщат, в зависимост от това какво използвам като трети аргумент.
SELECT
DATEADD( month, 0, 0 ) AS [Base Date],
DATEADD( month, 10, 0 ) AS [Add 10],
DATEADD( month, 10, -1 ) AS [Subtract 1];
Резултат:
+-------------------------+-------------------------+-------------------------+ | Base Date | Add 10 | Subtract 1 | |-------------------------+-------------------------+-------------------------| | 1900-01-01 00:00:00.000 | 1900-11-01 00:00:00.000 | 1900-10-31 00:00:00.000 | +-------------------------+-------------------------+-------------------------+
Така че третата опция ни дава правилния номер на месеца и тогава е лесно да използвате DATENAME()
за да го преобразувате в името на месеца.
Алтернатива:FORMAT()
Ако не ви харесва DATENAME()
функция, можете да я размените за FORMAT()
функция вместо това. Прилага се същата концепция.
SELECT FORMAT(
DATEADD( month , 10, -1 ),
'MMMM'
);
Резултат:
October