W SQL Server możesz użyć SET DATEFIRST
aby ustawić pierwszy dzień tygodnia.
Pierwszy dzień tygodnia może być inny w zależności od używanego języka. Na przykład domyślna wartość dla us_angielski to 7 (niedziela), podczas gdy domyślny niemiecki (niemiecki) to 1 (poniedziałek).
Ten artykuł pokazuje, jak zmienić pierwszy dzień tygodnia bez zmiany języka.
Składnia
Po pierwsze, składnia wygląda tak:
SET DATEFIRST { number | @number_var }
Gdzie number | @number_var
to liczba całkowita wskazująca pierwszy dzień tygodnia. To jest liczba od 1 do 7.
Poniższa tabela pokazuje mapowanie między liczbą a dniem tygodnia.
Wartość | Pierwszy dzień tygodnia to |
---|---|
1 | Poniedziałek |
2 | Wtorek |
3 | środa |
4 | Czwartek |
5 | Piątek |
6 | Sobota |
7 | Niedziela |
A więc wartość powiedzmy 3
, ustawi środę jako pierwszy dzień tygodnia.
Przykład 1 – Podstawowe użycie
Oto przykład demonstrujący składnię.
SET DATEFIRST 1;
Ustawia to pierwszy dzień tygodnia na poniedziałek (na powyższym wykresie widzimy, że wartość 1
mapy do poniedziałku).
Możemy wyświetlić bieżące ustawienie, używając @@DATEFIRST
aby zwrócić bieżącą wartość SET DATEFIRST
.
SELECT @@DATEFIRST AS 'Result';
Wynik:
+----------+ | Result | |----------| | 1 | +----------+
Przykład 2 – Zastąp ustawienie języka
Ten przykład pokazuje, jak SET DATEFIRST
ustawienie pasuje do ustawień języka.
SET LANGUAGE us_english; SELECT @@LANGUAGE AS 'LANGUAGE Before', @@DATEFIRST AS 'DATEFIRST Before'; SET DATEFIRST 1; SELECT @@LANGUAGE AS 'LANGUAGE After', @@DATEFIRST AS 'DATEFIRST After';
Wynik:
+-------------------+--------------------+ | LANGUAGE Before | DATEFIRST Before | |-------------------+--------------------| | us_english | 7 | +-------------------+--------------------+ Changed language setting to us_english. +------------------+-------------------+ | LANGUAGE After | DATEFIRST After | |------------------+-------------------| | us_english | 1 | +------------------+-------------------+
Widzimy więc, że język pozostaje ten sam, ale zmienił się pierwszy dzień tygodnia.
W tym przykładzie użyto SET LANGUAGE
aby ustawić język bieżącej sesji (który, jak wspomniano, służy do określenia pierwszego dnia tygodnia). Ustawienie języka również pośrednio określa format daty. W razie potrzeby możesz użyć SET DATEFORMAT
aby zastąpić to ustawienie dla formatu daty.
Aby zobaczyć, co DATEFIRST
ustawienia mapowane na każdy język, oto lista wszystkich języków i powiązanych formatów dat w SQL Server 2017.
Możesz także użyć sp_helplanguage
procedura składowana, aby zwrócić tę listę. Aby to zrobić, zobacz Jak znaleźć formaty dat używane dla określonego języka w SQL Server (T-SQL).