Sempre que você se conecta ao SQL Server, várias configurações padrão são aplicadas à sua sessão. Isso inclui as configurações de idioma e formato de data.
O formato de data normalmente é determinado pelo seu idioma padrão. Por exemplo, se seu idioma padrão for
us_english
, o formato de data padrão provavelmente será mdy
, e o primeiro dia da semana será o dia 7
(Domingo). Se você alterar seu idioma, o formato de data será implicitamente atualizado de acordo.
No entanto, você ainda tem a opção de alterar o formato da data sem alterar o idioma. Para fazer isso, você pode usar
SET DATEFORMAT
. Exemplo
Primeiro, vamos dar uma olhada nas configurações atuais.
DBCC USEROPTIONS;
Resultado:
+-------------------------+----------------+ | 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 | +-------------------------+----------------+
Então meu idioma atual é
us_english
e o formato de data é mdy
. Vamos alterar o formato da data e verificar novamente.
SET DATEFORMAT dmy;
DBCC USEROPTIONS;
Resultado:
+-------------------------+----------------+ | 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 | +-------------------------+----------------+
Então, alterei com sucesso o formato da data sem alterar o idioma. No entanto,
datefirst
continua o mesmo. Se você deseja alterar o datefirst
valor, use SET DATEFIRST
. SET DATEFIRST 1;
DBCC USEROPTIONS;
Resultado:
+-------------------------+----------------+ | 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 | +-------------------------+----------------+
Nesse caso, alterei o primeiro dia da semana para o dia 1, que é segunda-feira.
Redefinir novamente
Definir o idioma definirá implicitamente o
dateformat
e datefirst
configurações de volta para seus valores padrão para esse idioma (mesmo se você redefinir o idioma para o idioma atual). Então, no meu caso, posso redefinir o idioma para
us_english
, e também redefinirá os valores do formato de data. SET LANGUAGE us_English;
DBCC USEROPTIONS;
Resultado:
+-------------------------+----------------+ | 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 | +-------------------------+----------------+