Możesz użyć poniższego kodu T-SQL, aby przekonwertować numer miesiąca na odpowiadającą mu nazwę w SQL Server.
Dotyczy to czasów, w których tak naprawdę nie masz pełnej daty – kiedy wszystko, co masz, to numer miesiąca. Jeśli tak masz datę, oto jak uzyskać nazwę miesiąca z daty.
Przykład
Możesz uzyskać nazwę miesiąca z odpowiadającego mu numeru, używając DATENAME()
funkcja w połączeniu z DATEADD()
.
Oto przykład z 10 miesiącem (październik):
SELECT DATENAME(
month,
DATEADD( month , 10, -1 )
);
Wynik:
October
Wyjaśnienie Kodeksu
Jeśli zastanawiasz się, dlaczego istnieje -1
w powyższym kodzie, to dlatego, że data bazowa to 1900-01-01 (no cóż, 1900-01-01 00:00:00.000 żeby być dokładnym).
Jeśli dodamy 10 do 01, otrzymamy 11, czyli listopad (niewłaściwy miesiąc). Dlatego musimy ją odjąć przez 1.
Poniższy przykład powinien to zilustrować lepiej niż moje słowa. Oto różne DATEADD()
wartości, które są zwracane, w zależności od tego, czego używam jako trzeciego argumentu.
SELECT
DATEADD( month, 0, 0 ) AS [Base Date],
DATEADD( month, 10, 0 ) AS [Add 10],
DATEADD( month, 10, -1 ) AS [Subtract 1];
Wynik:
+-------------------------+-------------------------+-------------------------+ | 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 | +-------------------------+-------------------------+-------------------------+
Tak więc trzecia opcja daje nam poprawny numer miesiąca, a następnie wystarczy użyć DATENAME()
aby przekonwertować go na nazwę miesiąca.
Alternatywna:FORMAT()
Jeśli nie podoba Ci się DATENAME()
funkcji, możesz zamienić ją na FORMAT()
funkcja zamiast. Obowiązuje ta sama koncepcja.
SELECT FORMAT(
DATEADD( month , 10, -1 ),
'MMMM'
);
Wynik:
October