Wanneer u met datums in SQL Server werkt, kunt u gemakkelijk struikelen over verschillende datumnotaties. Iemand uit de VS kan bijvoorbeeld 07/01/2018 . overwegen om 7 januari te betekenen, maar iemand uit het VK zou het kunnen beschouwen als 1 juli.
In veel gevallen weet u misschien niet eens welk datumformaat wordt gebruikt voor een bepaalde taal/cultuur. Gelukkig slaat SQL Server deze informatie op in zijn bronnendatabase en kunt u deze ophalen met een van de twee onderstaande methoden.
Methode 1:de sp_helplanguage opgeslagen procedure
De sp_helplanguage
opgeslagen procedure retourneert informatie over een bepaalde alternatieve taal of over alle talen in SQL Server. Dit omvat de taalnaam, de alias en datumnotatie, en maandnamen die aan de respectieve taal zijn gekoppeld.
Voer het volgende uit om informatie voor alle talen in SQL Server te retourneren:
EXEC sp_helplanguage;
Dit levert een behoorlijk grote resultatenset op. Hier is de volledige lijst met talen die ik krijg als ik die uitvoer op mijn exemplaar van SQL Server 2017.
Als u niet wilt dat alle talen worden geretourneerd, kunt u dit beperken tot een specifieke taal.
Hier is een voorbeeld:
EXEC sp_helplanguage Spanish;
Dit is het resultaat als ik het in mssql-cli uitvoer:
-[ 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
Je kunt ook @@LANGUAGE
. gebruiken om het te beperken tot wat uw huidige taal ook is. Voorbeeld:
EXEC sp_helplanguage @@LANGUAGE;
Resultaat:
-[ 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
Methode 2:De weergave sys.syslanguages
De tweede manier waarop u de taalinformatie kunt retourneren, is door rechtstreeks naar de sys.syslanguages
te gaan. systeemcompatibiliteit bekijken. Dit is de mening waar de bovenstaande opgeslagen procedure zijn informatie vandaan haalt.
Ga als volgt te werk om deze weergave op te vragen:
SELECT * FROM sys.syslanguages;
Je kunt het ook verfijnen tot een taal door een WHERE
. toe te voegen clausule:
SELECT * FROM sys.syslanguages WHERE name = 'Español';
Merk op dat elke taalinvoer een naam en een alias heeft. De bovenstaande query kan worden herschreven om de alias te gebruiken:
SELECT * FROM sys.syslanguages WHERE alias = 'Spanish';
Zoals u waarschijnlijk kunt zien, is het veel gemakkelijker om de opgeslagen procedure te gebruiken (1e optie), maar deze weergave kan handig zijn als u alleen een subset van kolommen wilt retourneren.
Bijvoorbeeld:
SELECT name, alias, dateformat FROM sys.syslanguages WHERE alias = 'Spanish';
Resultaat:
+---------+---------+--------------+ | name | alias | dateformat | |---------+---------+--------------| | Español | Spanish | dmy | +---------+---------+--------------+