SQL Serverを使用する場合、現在の接続には、言語、日付形式などを決定するいくつかのオプションが含まれます。これらはデフォルトで設定できますが、セッション中にSET
ステートメント。
日付形式は、データベースに保存するために日付値に変換されるため、文字列の解釈に影響を与えます。 SET LANGUAGE
を使用して言語を設定する場合 、日付形式の設定は、それに応じて暗黙的に設定されます。これは、SET DATEFORMAT
で明示的にオーバーライドできます。 ステートメント。
いずれの場合も、DBCC USEROPTIONS
を使用して、現在の日付形式を見つけることができます。 指図。このコマンドはSET
を返します 現在の接続に設定されているオプション。
構文
構文は次のようになります:
DBCC USEROPTIONS [ WITH NO_INFOMSGS ]
オプションのNO_INFOMSGS
引数は、重大度レベルが0から10のすべての情報メッセージを抑制します。
例
コマンドの実行例と、現在のテストマシンで得られる結果は次のとおりです。
DBCC USEROPTIONS;
結果:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | mdy | | datefirst | 7 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+>
前述のように、これらのオプションはSET
で変更できます ステートメント。
現在のセッションの言語を変更してから、コマンドを再実行する例を次に示します。
SET LANGUAGE German; DBCC USEROPTIONS;
結果:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | Deutsch | | dateformat | dmy | | datefirst | 1 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+ Die Spracheneinstellung wurde in Deutsch geändert.
つまり、言語が変更されただけでなく、日付形式も変更されたことがわかります。
ただし、これが目的の日付形式でない場合は、SET DATEFORMAT
を使用して日付形式を明示的に変更できます。 。
このように:
SET DATEFORMAT mdy; DBCC USEROPTIONS;
結果:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | Deutsch | | dateformat | mdy | | datefirst | 1 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+>
また、言語をそのままにして、日付形式が指定どおりに変更されていることがわかります。
sys.dm_exec_requestsビュー
sys.dm_exec_requests
にクエリを実行して、現在のリクエストで使用されている日付形式を返すこともできます。 システムビュー。このビューは大量の列を返しますが、関心のある列のみに絞り込むことができます。この場合、関心があるのは1つの列(date_format
)のみです。 列:
SELECT r.date_format FROM master.sys.dm_exec_requests r WHERE r.session_id = @@SPID;
結果:
+---------------+ | date_format | |---------------| | mdy | +---------------+
また、クエリを現在のリクエストだけに絞り込みました。 @@SPID
を使用してこれを行いました 、現在のユーザープロセスのセッションIDを返します。