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;