W SQL Server możesz użyć MONTH()
funkcja zwracająca „miesiąc” część daty. Jest to zwracane jako liczba całkowita (nie nazwa miesiąca).
Poniżej znajdują się przykłady korzystania z tej funkcji.
Składnia
Składnia wygląda tak:
MONTH ( date )
Gdzie date
to wyrażenie, które rozwiązuje jeden z następujących typów danych:
- data
- data i godzina
- przesunięcie daty i godziny
- datagodzina2
- smalldatetime
- czas
Może to być wyrażenie kolumnowe, wyrażenie, literał ciągu lub zmienna zdefiniowana przez użytkownika.
Przykład
Oto podstawowy przykład tego, jak to działa:
SELECT SYSDATETIME() AS 'Date', MONTH(SYSDATETIME()) AS 'Month';
Wynik:
+-----------------------------+---------+ | Date | Month | |-----------------------------+---------| | 2018-06-18 00:39:06.7954314 | 6 | +-----------------------------+---------+
Więc MONTH()
funkcja mogła wyodrębnić miesiąc z datetime2 wartość (która została zwrócona przez SYSDATETIME()
funkcja).
Data podana jako literał ciągu
Oto przykład, w którym data jest podana jako literał ciągu.
SELECT MONTH('2019-01-07') AS Result;
Wynik:
+----------+ | Result | |----------| | 1 | +----------+
A oto przykład, w którym data jest podana w innym formacie:
SELECT MONTH('07/01/2017') AS Result;
Wynik:
+----------+ | Result | |----------| | 7 | +----------+
Jednak zazwyczaj najlepiej jest unikać używania dat w takich formatach. Jeśli musisz to zrobić, musisz pamiętać o ustawieniach języka i/lub ustawieniach formatu daty bieżącej sesji.
Ustawienia języka
Wynik poprzedniego przykładu będzie zależał od ustawień języka i/lub ustawień formatu daty w bieżącej sesji.
Kiedy ustawiamy język, format daty jest domyślnie ustawiany w tym samym czasie.
Oto, co się dzieje, gdy dostarczamy ten sam argument daty w dwóch różnych środowiskach językowych.
Brytyjski
SET LANGUAGE British; SELECT MONTH('07/01/2017') AS Result;
Wynik:
+----------+ | Result | |----------| | 1 | +----------+
us_angielski
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Wynik:
+----------+ | Result | |----------| | 7 | +----------+
Ustawienia formatu daty
Ustawienia formatu daty mogą zastąpić ustawienia języka, więc musisz również pamiętać o tym ustawieniu. Na przykład możemy używać języka us_angielski dla naszego języka (który ma domyślny format daty mdy ), ale możemy zmienić format daty na dmy .
Oto przykład:
us_English – Domyślny format daty
Tutaj ustawiamy język na us_English , który pośrednio ustawia format daty na myy .
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Wynik:
+----------+ | Result | |----------| | 7 | +----------+
us_English – Zastąp format daty
Tutaj ustawiamy język na us_English (co pośrednio ustawia format daty), ale potem jawnie ustawiamy format daty na dmy . Zastępuje to format daty, który został domyślnie ustawiony podczas ustawiania języka.
SET LANGUAGE us_English; SET DATEFORMAT dmy; SELECT MONTH('07/01/2017') AS Result;
Wynik:
+----------+ | Result | |----------| | 1 | +----------+
Zwróć nazwę miesiąca
Jeśli musisz zwrócić nazwę miesiąca (w przeciwieństwie do numeru miesiąca), zobacz 3 sposoby uzyskania nazwy miesiąca z daty w SQL Server.