Ao usar o SQL Server, sua conexão atual inclui várias opções que determinam coisas como idioma, formatos de data, etc. Elas podem ser definidas em qualquer que seja o padrão, mas também podem ser substituídas durante a sessão usando um
SET
demonstração. O formato de data afeta a interpretação das cadeias de caracteres à medida que são convertidas em valores de data para armazenamento no banco de dados. Quando o idioma é definido usando
SET LANGUAGE
, a configuração do formato de data é definida implicitamente de acordo. Isso pode ser substituído explicitamente com o SET DATEFORMAT
demonstração. De qualquer forma, você pode encontrar o formato de data atual usando as
DBCC USEROPTIONS
comando. Este comando retorna o SET
opções que foram definidas para a conexão atual. Sintaxe
A sintaxe fica assim:
DBCC USEROPTIONS [ WITH NO_INFOMSGS ]
O opcional
NO_INFOMSGS
O argumento suprime todas as mensagens informativas com níveis de gravidade de 0 a 10. Exemplo
Aqui está um exemplo de execução do comando e os resultados que recebo na minha máquina de teste atual:
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 | +-------------------------+----------------+
Como mencionado, você pode alterar essas opções com o
SET
declarações. Aqui está um exemplo de como alterar o idioma da sessão atual e, em seguida, executar o comando novamente:
SET LANGUAGE German; DBCC USEROPTIONS;
Resultado:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | Deutsch | | 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 | +-------------------------+----------------+ Die Spracheneinstellung wurde in Deutsch geändert.
Assim, podemos ver que não apenas o idioma mudou, mas o formato da data também mudou.
No entanto, se este não for o formato de data desejado, o formato de data pode ser alterado explicitamente usando
SET DATEFORMAT
. Assim:
SET DATEFORMAT mdy; DBCC USEROPTIONS;
Resultado:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | Deutsch | | dateformat | mdy | | 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 | +-------------------------+----------------+
E podemos ver que o formato da data foi alterado conforme especificado, deixando o idioma como está.
A visualização sys.dm_exec_requests
Você também pode retornar o formato de data usado na solicitação atual consultando o arquivo
sys.dm_exec_requests
visão do sistema. Essa visualização retorna um grande grupo de colunas, mas você pode reduzi-la apenas às colunas em que está interessado. No nosso caso, estamos interessados apenas em uma coluna – o date_format
coluna:SELECT r.date_format FROM master.sys.dm_exec_requests r WHERE r.session_id = @@SPID;
Resultado:
+---------------+ | date_format | |---------------| | mdy | +---------------+
Eu também reduzi a consulta para apenas a solicitação atual. Eu fiz isso usando
@@SPID
, que retorna o ID da sessão do processo do usuário atual.