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).