Всеки път, когато се свързвате със SQL Server, към вашата сесия се прилагат куп настройки по подразбиране. Те включват настройките за език и формат на датата.
Форматът на датата обикновено се определя от вашия език по подразбиране. Например, ако вашият език по подразбиране е us_english
, тогава форматът на датата по подразбиране вероятно ще бъде mdy
, а първият ден от седмицата ще бъде ден 7
(неделя).
Ако промените езика си, форматът на датата неявно ще бъде съответно актуализиран.
Все пак имате възможност да промените формата на датата, без да променяте езика. За да направите това, можете да използвате SET DATEFORMAT
.
Пример
Първо, нека да разгледаме текущите настройки.
DBCC USEROPTIONS;
Резултат:
+-------------------------+----------------+ | 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 | +-------------------------+----------------+
Така че моят текущ език е us_english
и форматът на датата е mdy
.
Нека променим формата на датата и да проверим отново.
SET DATEFORMAT dmy;
DBCC USEROPTIONS;
Резултат:
+-------------------------+----------------+ | 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 | +-------------------------+----------------+
Така че успешно промених формата на датата, без да променям езика. Въпреки това, datefirst
остава същото. Ако искате да промените datefirst
стойност, използвайте SET DATEFIRST
.
SET DATEFIRST 1;
DBCC USEROPTIONS;
Резултат:
+-------------------------+----------------+ | 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 | +-------------------------+----------------+
В този случай промених първия ден от седмицата да бъде ден 1, който е понеделник.
Нулирайте го обратно
Задаването на езика ще зададе имплицитно dateformat
и datefirst
настройките обратно към техните стойности по подразбиране за този език (дори ако нулирате езика до текущия език).
Така че в моя случай мога да нулирам езика на us_english
, и също така ще нулира стойностите на формата на датата.
SET LANGUAGE us_English;
DBCC USEROPTIONS;
Резултат:
+-------------------------+----------------+ | 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 | +-------------------------+----------------+