Lorsque vous travaillez avec des dates dans SQL Server, il est facile de se tromper avec différents formats de date. Par exemple, quelqu'un des États-Unis pourrait considérer 01/07/2018 signifie le 7 janvier, mais quelqu'un du Royaume-Uni pourrait considérer que cela signifie le 1er juillet.
Dans de nombreux cas, vous ne savez peut-être même pas quel format de date est utilisé pour une langue/culture particulière. Heureusement, SQL Server stocke ces informations dans sa base de données de ressources et vous pouvez les récupérer en utilisant l'une des deux méthodes ci-dessous.
Méthode 1 :la procédure stockée sp_helplanguage
Le sp_helplanguage
La procédure stockée renvoie des informations sur une autre langue particulière ou sur toutes les langues de SQL Server. Cela inclut le nom de la langue, son alias, le format de la date et les noms des mois, associés à la langue respective.
Pour renvoyer des informations pour toutes les langues dans SQL Server, exécutez la commande suivante :
EXEC sp_helplanguage;
Cela renvoie un ensemble de résultats assez volumineux. Voici la liste complète des langues que j'obtiens lorsque je l'exécute sur mon instance de SQL Server 2017.
Si vous ne voulez pas que toutes les langues soient renvoyées, vous pouvez le limiter à une langue spécifique.
Voici un exemple :
EXEC sp_helplanguage Spanish;
Voici le résultat lorsque je l'exécute dans mssql-cli :
-[ RECORD 1 ]------------------------- langid | 5 dateformat | dmy datefirst | 1 upgrade | 0 name | Español alias | Spanish months | Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octub shortmonths | Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic days | Lunes,Martes,Miércoles,Jueves,Viernes,Sábado,Domingo lcid | 3082 msglangid | 3082
Vous pouvez également utiliser @@LANGUAGE
pour le réduire à votre langue actuelle. Exemple :
EXEC sp_helplanguage @@LANGUAGE;
Résultat :
-[ RECORD 1 ]------------------------- langid | 0 dateformat | mdy datefirst | 7 upgrade | 0 name | us_english alias | English months | January,February,March,April,May,June,July,August,September,Octobe shortmonths | Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec days | Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday lcid | 1033 msglangid | 1033
Méthode 2 :la vue sys.syslanguages
La deuxième façon de renvoyer les informations de langue consiste à accéder directement à sys.syslanguages
vue de compatibilité du système. Il s'agit de la vue à partir de laquelle la procédure stockée ci-dessus tire ses informations.
Voici comment interroger cette vue :
SELECT * FROM sys.syslanguages;
Vous pouvez également le réduire à une langue en ajoutant un WHERE
clause :
SELECT * FROM sys.syslanguages WHERE name = 'Español';
Notez que chaque entrée de langue a un nom et un alias. La requête ci-dessus pourrait être réécrite pour utiliser l'alias :
SELECT * FROM sys.syslanguages WHERE alias = 'Spanish';
Comme vous pouvez probablement le constater, il est beaucoup plus facile d'utiliser la procédure stockée (1ère option), mais cette vue peut être pratique si vous souhaitez uniquement renvoyer un sous-ensemble de colonnes.
Par exemple :
SELECT name, alias, dateformat FROM sys.syslanguages WHERE alias = 'Spanish';
Résultat :
+---------+---------+--------------+ | name | alias | dateformat | |---------+---------+--------------| | Español | Spanish | dmy | +---------+---------+--------------+