SWITCHOFFSET (Transact-SQL)

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

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

トピック リンク アイコン Transact-SQL 構文表記規則

構文

SWITCHOFFSET ( DATETIMEOFFSET, time_zone )

引数

  • DATETIMEOFFSET
    datetimeoffset(n) 値に解決可能な式を指定します。

  • time_zone
    [+|-]TZH:TZM 形式の文字列、またはタイム ゾーン オフセットを表す (分の) 符号付き整数を指定します。夏時間は認識されて調整されているものと想定されます。

戻り値の型

DATETIMEOFFSET 引数の有効桁数を持つ datetimeoffset。

説明

SWITCHOFFSET は、datetimeoffset 値を選択して、当初保存されていたタイム ゾーン オフセットとは異なるタイム ゾーン オフセットに挿入する場合に使用します。 SWITCHOFFSET では、保存されている time_zone 値は更新されません。

SWITCHOFFSET を使用して、datetimeoffset 列を更新できます。

GETDATE() 関数で SWITCHOFFSET を使用すると、クエリの実行速度が低下する場合があります。クエリ オプティマイザーでは、GETDATE 値の正確な基数の推定を取得できないためです。 次の例に示すように、GETDATE 値を事前に計算してから、クエリでその値を指定することをお勧めします。 さらに、OPTION (RECOMPILE) クエリ ヒントを使用して、次に同じクエリが実行されるときに、クエリ オプティマイザーでクエリ プランが強制的に再コンパイルされるようにします。 そうすると、オプティマイザーは、GETDATE() の正確な基数の推定を取得し、より効率的なクエリ プランを生成します。

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)