请参阅下面的文档,您可能想要类似的内容:
-- 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 函数将输入的 DATETIMEOFFSET 值调整为指定的时区,同时保留 UTC 值。语法是 SWITCHOFFSET(datetimeoffset_value, time_zone)。例如,以下代码将当前系统 datetimeoffset 值调整为时区 GMT +05:00:
选择 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,您运行以下代码:
选择 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 值返回:
选择 TODATETIMEOFFSET(SYSDATETIME(), '-05:00');