SET DATEFORMAT (Transact-SQL)
date、smalldatetime、datetime、datetime2、datetimeoffset の各文字列を解釈する際の日付要素 (月、日、年) の順序を設定します。
Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻の関数 (Transact-SQL)」を参照してください。日付と時刻のデータ型および関数の一般的な例については、「日時データの使用」を参照してください。
構文
SET DATEFORMAT { format | @format_var }
引数
- format | **@**format_var
日付要素の順序を指定します。有効なパラメータは、mdy、dmy、ymd、ydm、myd、および dym です。Unicode または Unicode に変換可能な 2 バイト文字セット (DBCS) を指定できます。言語設定が英語 (U.S.) の場合、既定値は mdy です。サポートされている全言語の既定の DATEFORMAT については、「sp_helplanguage (Transact-SQL)」を参照してください。
説明
ydm の日付形式は、date 型、datetime2 型、および datetimeoffset 型ではサポートされていません。
文字列の形式によっては、DATEFORMAT 設定が文字列の解釈に与える影響が、datetime および smalldatetime 値の場合と、date、datetime2、および datetimeoffset 値の場合とで異なることがあります。この設定は、文字列をデータベース格納用の日付値に変換する際の解釈に影響します。データベースに格納された日付データ型の値 (ストレージ形式) の表示には影響しません。
ISO 8601 など、一部の文字列形式は、DATEFORMAT 設定とは無関係に解釈されます。各種の形式での DATEFORMAT の使用法については、「日時データの使用」の「文字列リテラルの日付/時刻形式」セクションを参照してください。
SET DATEFORMAT は、解析時ではなく実行時に設定されます。
SET DATEFORMAT で設定される日付の形式は、SET LANGUAGE で暗黙的に設定される日付の形式よりも優先されます。
権限
public ロールのメンバシップが必要です。
例
同じ DATEFORMAT 設定が適用された各セッションの中で、異なる日付文字列を入力に使用した例を次に示します。
-- Set date format to day/month/year.
SET DATEFORMAT dmy;
GO
DECLARE @datevar datetime2 = '31/12/2008 09:01:01.1234567';
SELECT @datevar;
GO
-- Result: 2008-12-31 09:01:01.123
SET DATEFORMAT dmy;
GO
DECLARE @datevar datetime2 = '12/31/2008 09:01:01.1234567';
SELECT @datevar;
GO
-- Result: Msg 241: Conversion failed when converting date and/or time -- from character string.
GO