対象者:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
アナリティクスプラットフォームシステム(PDW)
Microsoft FabricにおけるSQLデータベース
返します、 datetimeoffset 、保存されているタイム ゾーン オフセットから、指定された新しいタイム ゾーン オフセットへ変更された値。
日付と時刻のすべての 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 列を更新できます。
関数SWITCHOFFSETでGETDATE()を使用すると、クエリの実行速度が低下する可能性があります。 これは、クエリ オプティマイザーが datetime 値のカーディナリティを正確に推定できないためです。 この問題を解決するには、 OPTION (RECOMPILE) クエリ ヒントを使用して、次回同じクエリが実行されるときにクエリ オプティマイザーでクエリ プランを強制的に再コンパイルします。 その後、オプティマイザーは正確なカーディナリティ推定を行い、より効率的なクエリ プランを生成します。
RECOMPILE クエリ ヒントの詳細については、「クエリ ヒント」を参照してください。
DECLARE @dt AS 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