sql >> Base de Datos >  >> RDS >> Sqlserver

Cambiar el idioma de la sesión actual en SQL Server

Es posible que sepa que cuando se conecta a SQL Server, el idioma de esa sesión suele estar determinado por su inicio de sesión. Cuando se crea un inicio de sesión, se le asigna un idioma predeterminado.

El idioma de la sesión determina la fecha y hora formatos y mensajes del sistema.

Si bien puede cambiar el idioma predeterminado para un inicio de sesión, también puede anular el idioma predeterminado dentro de una sesión si lo necesita. Puede alternar entre idiomas si es necesario. O incluso podría abrir dos conexiones separadas y aplicar un idioma diferente a cada una de ellas.

Este artículo explica cómo cambiar el idioma dentro de una sesión.

ESTABLECER IDIOMA

El SET LANGUAGE le permite establecer el entorno de idioma para la sesión actual.

He aquí un ejemplo.

SET LANGUAGE British;

Eso establece el idioma actual en británico.

Puedo verificar esto con la siguiente consulta.

SELECT @@LANGUAGE;

Resultado:

British

Formatos de fecha

Debe saber que cambiar el idioma dentro de una sesión también cambia el formato de la fecha.

Aquí hay otra consulta para ilustrar esto.

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 es dmy y datefirst es 1 . Esto está en línea con el formato de fecha británico.

Esto es lo que sucede si cambio el idioma a 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 |
 +-------------------------+----------------+  

Tenga en cuenta que el formato de fecha se cambia implícitamente para cumplir con el formato de fecha de EE. UU.

Si encuentra este problema, siempre puede cambiar el formato de fecha sin cambiar el idioma.

Establecer idioma en el nivel de consulta

Algunas funciones aceptan un argumento de "cultura" que le permite especificar un idioma para usar solo para esa consulta. En otras palabras, puede cambiar el idioma ad-hoc dentro de una consulta, sin necesidad de cambiar el idioma de su sesión actual.

He aquí un ejemplo.

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

Obtener una lista de idiomas

Puede ejecutar la siguiente consulta para obtener una lista de idiomas disponibles en SQL Server.

EXEC sp_helplanguage;

También puede limitarlo a un idioma específico agregándolo al nombre o alias del idioma.

EXEC sp_helplanguage Italian;