Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como encontrar o formato de data que está sendo usado na sessão atual no SQL Server (T-SQL)


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.