SQL Serverに接続する場合、通常、日付形式は言語によって決まります。セッションのデフォルト言語は、Open Database Connectivity(ODBC)またはOLE DB APIを使用してセッションごとにオーバーライドされない限り、そのセッションのログインの言語です。
日付形式の設定は、データベースに保存するために文字列が日付値に変換されるため、文字列の解釈に影響します。データベースまたはストレージ形式に保存されている日付データ型の値の表示には影響しません。
セッションの言語によって日付形式が決まるという事実にもかかわらず、必要に応じて日付形式を上書きできます。たとえば、言語がus_english
の場合 、日付形式はmdy
になります (2018年7月1日 1月7日ではなく、7月1日を表します)。日付形式がdmy
になるようにこれを変更できます (または他の形式)言語がus_english
のままである間 。
T-SQLを使用すると、SET DATEFORMAT
を使用して、現在のセッションの日付形式を明示的に設定できます。 ステートメント。
構文
構文は次のとおりです。
SET DATEFORMAT { format | @format_var }
ここでformat | @format_var
日付部分の順序です。
有効な値はmdy
です。 、dmy
、ymd
、ydm
、myd
、およびdym
。これらは、UnicodeまたはUnicodeに変換された2バイト文字セット(DBCS)のいずれかです。
ただし、ydm
日付ではサポートされていません 、 datetime2 およびdatetimeoffset データ型。
例
何かを変更する前に、現在のユーザーオプションを見てみましょう。これにより、現在の言語と日付形式(およびその他のいくつか)がわかります:
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 | +-------------------------+----------------+>
言語がus_english
であることがわかります 日付形式はmdy
です。 (これは、その言語のデフォルトの日付形式です。)
それでは、日付形式を変更してから、ユーザーオプションをもう一度確認してみましょう。
SET DATEFORMAT dmy; DBCC USEROPTIONS;
結果:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | dmy | | 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 | +-------------------------+----------------+>
また、言語は同じままで、日付形式が変更されていることがわかります。
つまり、これは言語を変更せずに日付形式を変更する方法です。前述のように、言語を変更すると、同時に日付形式が暗黙的に設定されます。それが必要な場合は、SQL Server(T-SQL)で現在の言語を設定する方法を確認してください。