W SQL Server możesz użyć MONTH()
funkcja konwersji nazwy miesiąca na odpowiadającą mu liczbę.
Przykład
Oto przykład konwersji nazwy miesiąca na numer miesiąca.
SELECT MONTH('September' + '1,1');
Wynik:
9
To, co tutaj robię, to w zasadzie sfabrykowanie „daty” (obejmującej mój określony miesiąc), aby SQL Server nie zgłaszał błędu podczas korzystania z MONTH()
funkcja bez ważnej daty.
Ta funkcja akceptuje każde wyrażenie, które można rozwiązać na czas , data , smalldatetime , data i godzina , datagodzina2 lub przesunięcie daty i godziny wartość. Może to być wyrażenie, wyrażenie kolumnowe, zmienna zdefiniowana przez użytkownika lub literał ciągu.
Więcej „podobnych do daty”
Możesz również podać bardziej „przypominający randkę” argument, wykonując coś takiego:
SELECT MONTH('September' + ' 01, 1900');
Wynik:
9
Bieżący dzień i rok
Lub jeśli wolisz używać bieżącego dnia i roku, możesz zrobić coś takiego:
SELECT MONTH('September' + FORMAT(GETDATE(), 'd,y'));
Wynik:
9
Dla jasności, chyba że określony miesiąc jest taki sam jak bieżący miesiąc, otrzymasz inną datę niż bieżąca.
Oto przykład ilustrujący, co mam na myśli:
SELECT
FORMAT(GETDATE(), 'MMMM d, yyyy') AS [Today],
'September' + FORMAT(GETDATE(), ' d, yyyy') AS [Modified],
MONTH('September' + FORMAT(GETDATE(), ' d, yyyy')) AS [Month Number];
Wynik:
+----------------+--------------------+----------------+ | Today | Modified | Month Number | |----------------+--------------------+----------------| | March 22, 2020 | September 22, 2020 | 9 | +----------------+--------------------+----------------+
To zapytanie zostało uruchomione 22 marca 2020 r., ale zmodyfikowana data to 22 września 2020 r.
Niezależnie od tego prawidłowy numer miesiąca jest zwracany, gdy używamy MONTH()
.