ドキュメントについては以下を参照してください。おそらく次のようなものが必要です。
-- up here set the @time_zone variable.
INSERT INTO Table_Temp
(Col0, ... ColN,)
SELECT
COl0, TODATETIMEOFFSET(COLDATE, @time_zone),.... ColN, from
Table_Original;
MSDNから
SWITCHOFFSET 関数は、UTC 値を維持しながら、入力 DATETIMEOFFSET 値を指定されたタイム ゾーンに調整します。構文は SWITCHOFFSET(datetimeoffset_value, time_zone) です。たとえば、次のコードは、現在のシステムの datetimeoffset 値をタイムゾーン GMT +05:00 に調整します。
SELECT SWITCHOFFSET(SYSDATETIMEOFFSET(), '-05:00');
したがって、現在のシステムの datetimeoffset 値が 2009 年 2 月 12 日 10:00:00.0000000 -08:00 の場合、このコードは 2009 年 2 月 12 日 13:00:00.0000000 -05:00 という値を返します。
TODATETIMEOFFSET 関数は、入力日時値のタイム ゾーン オフセットを設定します。その構文は TODATETIMEOFFSET(date_and_time_value, time_zone) です。
この関数は、いくつかの点で SWITCHOFFSET とは異なります。まず、入力として datetimeoffset 値に制限されません。むしろ、任意の日付と時刻のデータ型を受け入れます。次に、ソース値と指定されたタイム ゾーンとのタイム ゾーンの差に基づいて時刻を調整しようとせず、指定されたタイム ゾーンを datetimeoffset 値として単純に入力日付と時刻の値を返します。
TODATETIMEOFFSET 関数の主な目的は、タイム ゾーンに対応していない型を、指定されたタイム ゾーン オフセットによって DATETIMEOFFSET に変換することです。指定された日付と時刻の値が DATETIMEOFFSET の場合、TODATETIMEOFFSET 関数は、同じ元のローカルの日付と時刻の値に新しい指定されたタイム ゾーン オフセットを加えたものに基づいて、DATETIMEOFFSET 値を変更します。
たとえば、現在のシステムの datetimeoffset 値が 2009 年 2 月 12 日 10:00:00.0000000 -08:00 の場合、次のコードを実行します。
SELECT TODATETIMEOFFSET(SYSDATETIMEOFFSET(), '-05:00');
値 2009 年 2 月 12 日 10:00:00.0000000 -05:00 が返されます。SWITCHOFFSET 関数は 2009 年 2 月 12 日 13:00:00.0000000 -05:00 を返したことを思い出してください。これは、入力 (-08:00) と指定されたタイム ゾーン (-05:00) の間のタイム ゾーンの違いに基づいて時間を調整したためです。 .
前述のように、TODATETIMEOFFSET 関数は、任意の日付と時刻のデータ型を入力として使用できます。たとえば、次のコードは、現在のシステムの日付と時刻の値を取得し、タイム ゾーンが -00:05 の datetimeoffset 値として返します。
SELECT TODATETIMEOFFSET(SYSDATETIME(), '-05:00');