W SQL Server możesz użyć DAY()
funkcja zwracająca „dzień” część daty. Ta funkcja zwraca liczbę całkowitą reprezentującą dzień miesiąca (nie dzień tygodnia).
Poniżej znajdują się przykłady korzystania z tej funkcji.
Składnia
Składnia wygląda tak:
DAY ( 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', DAY(SYSDATETIME()) AS 'Day';
Wynik:
+-----------------------------+-------+ | Date | Day | |-----------------------------+-------| | 2018-06-18 00:20:22.1284540 | 18 | +-----------------------------+-------+
Więc DAY()
funkcja mogła wyodrębnić dzień 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 DAY('2019-01-07') AS Result;
Wynik:
+----------+ | Result | |----------| | 7 | +----------+
A oto przykład, w którym data jest podana w innym formacie:
SELECT DAY('07/01/2017') AS Result;
Wynik:
+----------+ | Result | |----------| | 1 | +----------+
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 DAY('07/01/2017') AS Result;
Wynik:
+----------+ | Result | |----------| | 7 | +----------+
us_angielski
SET LANGUAGE us_English; SELECT DAY('07/01/2017') AS Result;
Wynik:
+----------+ | Result | |----------| | 1 | +----------+
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 DAY('07/01/2017') AS Result;
Wynik:
+----------+ | Result | |----------| | 1 | +----------+
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 DAY('07/01/2017') AS Result;
Wynik:
+----------+ | Result | |----------| | 7 | +----------+
Zwróć nazwę dnia
Jeśli chcesz zwrócić nazwę dnia (w przeciwieństwie do numeru dnia), zobacz 3 sposoby uzyskania nazwy dnia z daty w SQL Server.