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

Alterar o formato de data da sessão atual no SQL Server


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 |
 +-------------------------+----------------+