Når du arbejder med datoer i SQL Server, er det nemt at blive ramt af forskellige datoformater. En person fra USA kan f.eks. overveje 01/07/2018 betyder den 7. januar, men nogen fra Storbritannien vil måske overveje, at det betyder den 1. juli.
I mange tilfælde ved du måske ikke engang, hvilket datoformat der bruges til et bestemt sprog/kultur. Heldigvis gemmer SQL Server disse oplysninger i sin ressourcedatabase, og du kan hente dem ved at bruge en af de to metoder nedenfor.
Metode 1: sp_helplanguage Stored Procedure
sp_helplanguage
lagret procedure returnerer oplysninger om et bestemt alternativt sprog eller om alle sprog i SQL Server. Dette inkluderer sprognavnet, dets alias og datoformat og månedsnavne, der er knyttet til det respektive sprog.
For at returnere oplysninger for alle sprog i SQL Server skal du køre følgende:
EXEC sp_helplanguage;
Dette giver et ret stort resultatsæt. Her er den fulde liste over sprog, jeg får, når jeg kører det på min forekomst af SQL Server 2017.
Hvis du ikke vil have alle sprog returneret, kan du indsnævre det til et bestemt sprog.
Her er et eksempel:
EXEC sp_helplanguage Spanish;
Her er resultatet, når jeg kører det i 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
Du kan også bruge @@LANGUAGE
at indsnævre det til, hvad end dit nuværende sprog er. Eksempel:
EXEC sp_helplanguage @@LANGUAGE;
Resultat:
-[ 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
Metode 2:Visningen sys.syslanguages
Den anden måde, du kan returnere sprogoplysningerne på, er ved at gå direkte til sys.syslanguages
systemkompatibilitetsvisning. Dette er den opfattelse, som ovenstående lagrede procedure får sine oplysninger fra.
Sådan forespørger du denne visning:
SELECT * FROM sys.syslanguages;
Du kan også indsnævre det til et sprog ved at tilføje en WHERE
klausul:
SELECT * FROM sys.syslanguages WHERE name = 'Español';
Bemærk, at hver sprogindgang har et navn og et alias. Ovenstående forespørgsel kunne omskrives til at bruge aliaset:
SELECT * FROM sys.syslanguages WHERE alias = 'Spanish';
Som du sikkert kan se, er det meget nemmere at bruge den lagrede procedure (1. mulighed), men denne visning kan være praktisk, hvis du kun vil have en undergruppe af kolonner returneret.
For eksempel:
SELECT name, alias, dateformat FROM sys.syslanguages WHERE alias = 'Spanish';
Resultat:
+---------+---------+--------------+ | name | alias | dateformat | |---------+---------+--------------| | Español | Spanish | dmy | +---------+---------+--------------+