Bei der Arbeit mit Datumsangaben in SQL Server kommt man leicht mit unterschiedlichen Datumsformaten ins Stolpern. Beispielsweise könnte jemand aus den USA 01.07.2018 in Betracht ziehen für den 7. Januar, aber jemand aus dem Vereinigten Königreich könnte es für den 1. Juli halten.
In vielen Fällen wissen Sie vielleicht nicht einmal, welches Datumsformat für eine bestimmte Sprache/Kultur verwendet wird. Glücklicherweise speichert SQL Server diese Informationen in seiner Ressourcendatenbank, und Sie können sie mit einer der beiden folgenden Methoden abrufen.
Methode 1:Die gespeicherte Prozedur sp_helplanguage
Die sp_helplanguage
gespeicherte Prozedur gibt Informationen zu einer bestimmten alternativen Sprache oder zu allen Sprachen in SQL Server zurück. Dazu gehören der Sprachname, sein Alias und Datumsformat sowie Monatsnamen, die der jeweiligen Sprache zugeordnet sind.
Führen Sie Folgendes aus, um Informationen für alle Sprachen in SQL Server zurückzugeben:
EXEC sp_helplanguage;
Dies gibt eine ziemlich große Ergebnismenge zurück. Hier ist die vollständige Liste der Sprachen, die ich erhalte, wenn ich das auf meiner Instanz von SQL Server 2017 ausführe.
Wenn Sie nicht möchten, dass alle Sprachen zurückgegeben werden, können Sie es auf eine bestimmte Sprache eingrenzen.
Hier ist ein Beispiel:
EXEC sp_helplanguage Spanish;
Hier ist das Ergebnis, wenn ich es in mssql-cli ausführe:
-[ 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
Sie können auch @@LANGUAGE
verwenden um es auf Ihre aktuelle Sprache einzugrenzen. Beispiel:
EXEC sp_helplanguage @@LANGUAGE;
Ergebnis:
-[ 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:Die sys.syslanguages-Ansicht
Die zweite Möglichkeit, die Sprachinformationen zurückzugeben, besteht darin, direkt zu sys.syslanguages
zu gehen Systemkompatibilitätsansicht. Dies ist die Ansicht, aus der die obige gespeicherte Prozedur ihre Informationen bezieht.
So fragen Sie diese Ansicht ab:
SELECT * FROM sys.syslanguages;
Sie können es auch auf eine Sprache eingrenzen, indem Sie ein WHERE
hinzufügen Klausel:
SELECT * FROM sys.syslanguages WHERE name = 'Español';
Beachten Sie, dass jeder Spracheintrag einen Namen und einen Alias hat. Die obige Abfrage könnte umgeschrieben werden, um den Alias zu verwenden:
SELECT * FROM sys.syslanguages WHERE alias = 'Spanish';
Wie Sie wahrscheinlich sehen können, ist es viel einfacher, die gespeicherte Prozedur (1. Option) zu verwenden, aber diese Ansicht könnte praktisch sein, wenn Sie nur eine Teilmenge von Spalten zurückgeben möchten.
Zum Beispiel:
SELECT name, alias, dateformat FROM sys.syslanguages WHERE alias = 'Spanish';
Ergebnis:
+---------+---------+--------------+ | name | alias | dateformat | |---------+---------+--------------| | Español | Spanish | dmy | +---------+---------+--------------+