Vous savez peut-être que lorsque vous vous connectez à SQL Server, la langue de cette session est généralement déterminée par votre connexion. Lorsqu'un identifiant est créé, une langue par défaut lui est attribuée.
La langue de la session détermine la datetime formats et messages système.
Bien que vous puissiez certainement changer la langue par défaut pour une connexion, vous pouvez également remplacer la langue par défaut dans une session si vous en avez besoin. Vous pouvez basculer entre les langues si nécessaire. Ou vous pouvez même ouvrir deux connexions distinctes et appliquer une langue différente à chacune d'elles.
Cet article explique comment changer la langue au sein d'une session.
RÉGLER LA LANGUE
Le SET LANGUAGE
vous permet de définir l'environnement linguistique pour la session en cours.
Voici un exemple.
SET LANGUAGE British;
Cela définit la langue actuelle sur le britannique.
Je peux le vérifier avec la requête suivante.
SELECT @@LANGUAGE;
Résultat :
British
Formats de date
Vous devez savoir que changer la langue au sein d'une session modifie également le format de la date.
Voici une autre requête pour illustrer cela.
DBCC USEROPTIONS;
Résultat :
+-------------------------+----------------+ | 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 | +-------------------------+----------------+
Notez que dateformat
est dmy
et datefirst
est 1
. Ceci est conforme au format de date britannique.
Voici ce qui se passe si je change la langue en 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 | +-------------------------+----------------+
Notez que le format de date est implicitement modifié pour respecter le format de date américain.
Si vous trouvez cela problématique, vous pouvez toujours changer le format de la date sans changer la langue.
Définir la langue au niveau de la requête
Certaines fonctions acceptent un argument "culture" qui vous permet de spécifier une langue à utiliser pour cette requête uniquement. En d'autres termes, vous pouvez changer la langue ad hoc dans une requête, sans avoir à changer la langue de votre session en cours.
Voici un exemple.
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];
Résultat :
+--------------+------------+------------+ | My Default | British | German | |--------------+------------+------------| | 3/29/2020 | 29/03/2020 | 29.03.2020 | +--------------+------------+------------+
Obtenir une liste de langues
Vous pouvez exécuter la requête suivante pour obtenir une liste des langues disponibles dans SQL Server.
EXEC sp_helplanguage;
Vous pouvez également le limiter à une langue spécifique en lui ajoutant le nom ou l'alias de la langue.
EXEC sp_helplanguage Italian;