SQL Serverで日付を操作する場合、さまざまな日付形式に簡単につまずくことがあります。たとえば、米国の誰かが2018年1月7日を検討する場合があります。 1月7日を意味しますが、英国の誰かが7月1日を意味すると考えるかもしれません。
多くの場合、特定の言語/文化にどの日付形式が使用されているかさえわからない場合があります。幸い、SQL Serverはこの情報をリソースデータベースに格納しており、以下の2つの方法のいずれかを使用して情報を取得できます。
方法1:sp_helplanguageストアドプロシージャ
sp_helplanguage
ストアドプロシージャは、特定の代替言語またはSQLServerのすべての言語に関する情報を返します。これには、それぞれの言語に関連付けられている言語名、そのエイリアス、日付形式、および月の名前が含まれます。
SQL Serverのすべての言語の情報を返すには、次のコマンドを実行します。
EXEC sp_helplanguage;
これにより、非常に大きな結果セットが返されます。 SQLServer2017のインスタンスで実行したときに取得する言語の完全なリストは次のとおりです。
すべての言語を返したくない場合は、特定の言語に絞り込むことができます。
次に例を示します:
EXEC sp_helplanguage Spanish;
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
@@LANGUAGE
を使用することもできます 現在の言語に絞り込みます。例:
EXEC sp_helplanguage @@LANGUAGE;
結果:
-[ 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
方法2:sys.syslanguagesビュー
言語情報を返す2つ目の方法は、sys.syslanguages
に直接アクセスすることです。 システム互換表示。これは、上記のストアドプロシージャが情報を取得するビューです。
このビューをクエリする方法は次のとおりです。
SELECT * FROM sys.syslanguages;
WHERE
を追加して、言語に絞り込むこともできます 条項:
SELECT * FROM sys.syslanguages WHERE name = 'Español';
各言語エントリには名前とエイリアスがあることに注意してください。上記のクエリは、エイリアスを使用するように書き直すことができます:
SELECT * FROM sys.syslanguages WHERE alias = 'Spanish';
おそらくおわかりのように、ストアドプロシージャ(最初のオプション)を使用する方がはるかに簡単ですが、列のサブセットのみを返したい場合は、このビューが便利です。
例:
SELECT name, alias, dateformat FROM sys.syslanguages WHERE alias = 'Spanish';
結果:
+---------+---------+--------------+ | name | alias | dateformat | |---------+---------+--------------| | Español | Spanish | dmy | +---------+---------+--------------+