SQL Serverでは、SET DATEFIRST
を使用できます 週の最初の曜日を設定します。
週の最初の日は、使用されている言語によって異なる場合があります。たとえば、us_Englishのデフォルトは 7です。 (日曜日)、ドイツ語(ドイツ語)のデフォルトは 1 (月曜日)。
この記事では、言語を変更せずに週の最初の曜日を変更する方法を示します。
構文
まず、構文は次のようになります。
SET DATEFIRST { number | @number_var }
ここでnumber | @number_var
週の最初の日を示す整数です。これは1から7までの数字です。
次の表は、数値と曜日の間のマッピングを示しています。
値 | 週の最初の日は |
---|---|
1 | 月曜日 |
2 | 火曜日 |
3 | 水曜日 |
4 | 木曜日 |
5 | 金曜日 |
6 | 土曜日 |
7 | 日曜日 |
したがって、たとえば3
の値 、水曜日を週の最初の日として設定します。
例1-基本的な使用法
構文を示す例を次に示します。
SET DATEFIRST 1;
これにより、週の最初の日が月曜日に設定されます(上のグラフから、値が1
であることがわかります。 月曜日にマップします。
@@DATEFIRST
を使用すると、現在の設定を表示できます。 SET DATEFIRST
の現在の値を返します 。
SELECT @@DATEFIRST AS 'Result';
結果:
+----------+ | Result | |----------| | 1 | +----------+
例2–言語設定を上書きする
この例は、SET DATEFIRST
設定は言語設定に適合します。
SET LANGUAGE us_english; SELECT @@LANGUAGE AS 'LANGUAGE Before', @@DATEFIRST AS 'DATEFIRST Before'; SET DATEFIRST 1; SELECT @@LANGUAGE AS 'LANGUAGE After', @@DATEFIRST AS 'DATEFIRST After';
結果:
+-------------------+--------------------+ | LANGUAGE Before | DATEFIRST Before | |-------------------+--------------------| | us_english | 7 | +-------------------+--------------------+ Changed language setting to us_english. +------------------+-------------------+ | LANGUAGE After | DATEFIRST After | |------------------+-------------------| | us_english | 1 | +------------------+-------------------+
したがって、言語は同じままですが、週の最初の日が変更されていることがわかります。
この例では、SET LANGUAGE
を使用しています 現在のセッションの言語を設定します(前述のように、週の最初の曜日を決定するために使用されます)。言語設定は、日付形式も暗黙的に設定します。必要に応じて、SET DATEFORMAT
を使用できます 日付形式のこの設定を上書きします。
DATEFIRST
を確認するには 設定は各言語にマッピングされます。SQLServer2017のすべての言語と関連する日付形式のリストは次のとおりです。
sp_helplanguage
を使用することもできます そのリストを返すストアドプロシージャ。これを行うには、SQL Server(T-SQL)で特定の言語に使用される日付形式を見つける方法を参照してください。