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;