SWITCHOFFSET (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
返します、 datetimeoffset 、保存されているタイム ゾーン オフセットから、指定された新しいタイム ゾーン オフセットへ変更された値。
Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻のデータ型および関数 (Transact-SQL)」を参照してください。
構文
SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )
引数
datetimeoffset_expression
datetimeoffset(n) 値に解決可能な式を指定する。
timezoneoffset_expression
[+|-]TZH:TZM 形式の式か、またはタイム ゾーンのオフセットを表す符号付き整数 (分) です。夏時間対応であり調整済みと見なされます。
戻り値の型
datetimeoffset_expression 引数の小数部の有効桁数を持つ、datetimeoffset。
解説
SWITCHOFFSET を使用して、選択、 datetimeoffset に最初に格納されているタイム ゾーン オフセットとは異なるタイム ゾーン オフセットの値です。 SWITCHOFFSET は、保存されているは更新されません time_zone 値。
SWITCHOFFSET を使用して、更新、 datetimeoffset 列です。
GETDATE() 関数と一緒に SWITCHOFFSET を使用すると、クエリの実行速度が遅くなる場合があります。 これは、クエリ オプティマイザーが datetime 値のカーディナリティを正確に推定できないためです。 この問題を解決するには、OPTION (RECOMPILE) クエリ ヒントを使用し、次に同じクエリが実行されるときにクエリ オプティマイザーによってクエリ プランが強制的に再コンパイルされるようにします。 そうすると、オプティマイザーによって、正確なカーディナリティの推定値が取得され、より効率的なクエリ プランが生成されます。 RECOMPILE クエリ ヒントの詳細については、「クエリ ヒント (Transact-SQL)」を参照してください。
DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00');
SELECT * FROM t
WHERE c1 > @dt OPTION (RECOMPILE);
例
次の例では、SWITCHOFFSET
を使用して、データベースに保存されている値とは異なるタイム ゾーン オフセットを表示します。
CREATE TABLE dbo.test
(
ColDatetimeoffset datetimeoffset
);
GO
INSERT INTO dbo.test
VALUES ('1998-09-20 7:45:50.71345 -5:00');
GO
SELECT SWITCHOFFSET (ColDatetimeoffset, '-08:00')
FROM dbo.test;
GO
--Returns: 1998-09-20 04:45:50.7134500 -08:00
SELECT ColDatetimeoffset
FROM dbo.test;
--Returns: 1998-09-20 07:45:50.7134500 -05:00