共用方式為


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 資料行。

將 SWITCHOFFSET 搭配 GETDATE() 函數使用可能會導致查詢執行速度緩慢,因為查詢最佳化工具無法取得 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)