Za każdym razem, gdy łączysz się z SQL Server, do Twojej sesji zostaje zastosowanych kilka ustawień domyślnych. Obejmują one ustawienia języka i formatu daty.
Format daty jest zwykle określany przez domyślny język. Na przykład, jeśli domyślnym językiem jest us_english
, wtedy domyślnym formatem daty będzie prawdopodobnie mdy
, a pierwszym dniem tygodnia będzie dzień 7
(niedziela).
Jeśli zmienisz język, format daty zostanie domyślnie odpowiednio zaktualizowany.
Jednak nadal masz możliwość zmiany formatu daty bez zmiany języka. Aby to zrobić, możesz użyć SET DATEFORMAT
.
Przykład
Najpierw przyjrzyjmy się aktualnym ustawieniom.
DBCC USEROPTIONS;
Wynik:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | mdy | | datefirst | 7 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+
Więc moim obecnym językiem jest us_english
a format daty to mdy
.
Zmieńmy format daty i sprawdźmy ponownie.
SET DATEFORMAT dmy;
DBCC USEROPTIONS;
Wynik:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | dmy | | datefirst | 7 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+
Udało mi się więc zmienić format daty bez zmiany języka. Jednak datefirst
pozostaje takie samo. Jeśli chcesz zmienić datefirst
wartość, użyj SET DATEFIRST
.
SET DATEFIRST 1;
DBCC USEROPTIONS;
Wynik:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | dmy | | datefirst | 1 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+
W tym przypadku zmieniłem pierwszy dzień tygodnia na dzień 1, czyli poniedziałek.
Zresetuj to z powrotem
Ustawienie języka spowoduje domyślne ustawienie dateformat
i datefirst
ustawienia z powrotem do wartości domyślnych dla tego języka (nawet jeśli zresetujesz język do bieżącego).
Więc w moim przypadku mogę zresetować język do us_english
, a także zresetuje wartości formatu daty.
SET LANGUAGE us_English;
DBCC USEROPTIONS;
Wynik:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | mdy | | datefirst | 7 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+