SET DATEFORMAT (Transact-SQL)
Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス
日付の各文字列を解釈するために、日付要素 (月、日、年) の順序を設定します。 これらの文字列の型は、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) を指定できます。 米国英語の既定値は mdy です。 サポートされている全言語の既定の DATEFORMAT については、「sp_helplanguage (Transact-SQL)」を参照してください。
注釈
DATEFORMAT ydm は、date、datetime2、datetimeoffset データ型にはサポートされていません。
DATEFORMAT の設定は、文字列の形式によっては、日付データ型の文字列の解釈が異なる場合があります。 たとえば、datetime および smalldatetime の解釈は、date、datetime2、または datetimeoffset と一致しないことがあります。 DATEFORMAT は、文字列をデータベースの日付値に変換するときの解釈に影響します。 日付データ型の値の表示や、データベースのストレージ形式には影響しません。
ISO 8601 など、一部の文字列形式は、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