SWITCHOFFSET (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

返します、 datetimeoffset 、保存されているタイム ゾーン オフセットから、指定された新しいタイム ゾーン オフセットへ変更された値。

Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻のデータ型および関数 (Transact-SQL)」を参照してください。

Transact-SQL 構文表記規則

構文

SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )   

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

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  

参照

CAST および CONVERT (Transact-SQL)
AT TIME ZONE (Transact-SQL)