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

Como alterar o formato de data atual no SQL Server (T-SQL)


Quando você se conecta ao SQL Server, geralmente o formato de data é determinado pelo seu idioma. O idioma padrão para uma sessão é o idioma do login dessa sessão, a menos que seja substituído por sessão usando o ODBC (Open Database Connectivity) ou APIs OLE DB.

A configuração do 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. Ele não afeta a exibição dos valores de tipo de dados de data armazenados no banco de dados ou no formato de armazenamento.

Apesar do idioma da sua sessão determinar o formato da data, você pode substituir o formato da data, se necessário. Por exemplo, se seu idioma for us_english , o formato de data será mdy (para que 01/07/2018 representa o 1º de julho e não o 7 de janeiro). Você pode alterar isso para que o formato de data seja dmy (ou qualquer outro formato) enquanto o idioma permanece us_english .

Você pode usar T-SQL para definir explicitamente o formato de data da sessão atual usando o SET DATEFORMAT demonstração.


Sintaxe


Veja como fica a sintaxe:
SET DATEFORMAT { format | @format_var }

Onde format | @format_var é a ordem das partes da data.

Os valores válidos são mdy , dmy , ymd , ydm , myd e dym . Eles podem ser Unicode ou conjuntos de caracteres de byte duplo (DBCS) convertidos em Unicode.

No entanto, observe que  ydm não é compatível com datadatahora2deslocamento de data e hora tipos de dados.

Exemplo


Antes de alterarmos qualquer coisa, vamos ver as opções atuais do usuário. Isso nos dirá qual é o idioma atual e o formato da data (assim como algumas outras coisas):
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 |
+-------------------------+----------------+

Podemos ver que o idioma é us_english e o formato de data é mdy (que é o formato de data padrão para esse idioma).

Então, vamos alterar o formato da data e verificar as opções do usuário 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 |
+-------------------------+----------------+

E podemos ver que o formato da data mudou, enquanto o idioma permanece o mesmo.

Então é assim que muda o formato da data sem mudar o idioma. Como mencionado, se você alterar o idioma, ele definirá implicitamente o formato de data ao mesmo tempo. Se é isso que você quer fazer, confira Como definir o idioma atual no SQL Server (T-SQL).