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

Alterar o idioma da sessão atual no SQL Server


Você deve saber que, ao se conectar ao SQL Server, o idioma dessa sessão geralmente é determinado pelo seu logon. Quando um login é criado, ele recebe um idioma padrão.

O idioma da sessão determina o datetime formatos e mensagens do sistema.

Embora você certamente possa alterar o idioma padrão para um login, também pode substituir o idioma padrão em uma sessão, se necessário. Você pode alternar entre os idiomas, se necessário. Ou você pode até abrir duas conexões separadas e aplicar uma linguagem diferente a cada uma delas.

Este artigo explica como alterar o idioma em uma sessão.

DEFINIR IDIOMA


O SET LANGUAGE A instrução permite que você defina o ambiente de idioma para a sessão atual.

Aqui está um exemplo.
SET LANGUAGE British;

Isso define o idioma atual para o britânico.

Eu posso verificar isso com a seguinte consulta.
SELECT @@LANGUAGE;

Resultado:
British

Formatos de data


Você deve saber que alterar o idioma em uma sessão também altera o formato da data.

Aqui está outra consulta para ilustrar isso.
DBCC USEROPTIONS;

Resultado:
+-------------------------+----------------+
 | Set Option              | Value          |
 |-------------------------+----------------|
 | textsize                | -1             |
 | language                | British        |
 | 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 |
 +-------------------------+----------------+ 

Observe que dateformat é dmy e datefirst é 1 . Isso está alinhado com o formato de data britânico.

Veja o que acontece se eu alterar o idioma para us_english .
SET LANGUAGE us_english; 
 ....... DBCC USEROPTIONS;                                                             
 Time: 0.738s
 Changed language setting to us_english.
 +-------------------------+----------------+
 | 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 |
 +-------------------------+----------------+  

Observe que o formato de data é alterado implicitamente para aderir à formatação de data dos EUA.

Se você achar isso problemático, sempre poderá alterar o formato da data sem alterar o idioma.

Definir o idioma no nível da consulta


Algumas funções aceitam um argumento de “cultura” que permite especificar um idioma a ser usado apenas para essa consulta. Em outras palavras, você pode alterar o idioma ad-hoc em uma consulta, sem precisar alterar o idioma da sua sessão atual.

Aqui está um exemplo.
SET LANGUAGE us_english;
SELECT 
  FORMAT(GETDATE(), 'd') AS [My Default],
  FORMAT(GETDATE(), 'd', 'en-GB') AS [British],
  FORMAT(GETDATE(), 'd', 'de-DE') AS [German];

Resultado:
+--------------+------------+------------+
 | My Default   | British    | German     |
 |--------------+------------+------------|
 | 3/29/2020    | 29/03/2020 | 29.03.2020 |
 +--------------+------------+------------+  

Obter uma lista de idiomas


Você pode executar a consulta a seguir para obter uma lista de idiomas disponíveis no SQL Server.
EXEC sp_helplanguage;

Você também pode reduzi-lo a um idioma específico anexando-o com o nome do idioma ou alias.
EXEC sp_helplanguage Italian;