Aracılığıyla paylaş


SWITCHOFFSET (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitik Platform Sistemi (PDW)Microsoft Fabric'te SQL veritabanı

Depolanan saat dilimi uzaklığından belirtilen yeni saat dilimi uzaklığına değiştirilen bir datetimeoffset değeri döndürür.

Tüm Transact-SQL tarih ve saat veri türlerine ve işlevlerine genel bakış için bkz. Tarih ve saat veri türleri ve işlevleri.

Transact-SQL söz dizimi kuralları

Sözdizimi

SWITCHOFFSET ( datetimeoffset_expression , timezoneoffset_expression )

Arguments

datetimeoffset_expression

Datetimeoffset(n) değerine çözümlenebilen ifade.

timezoneoffset_expression

[+|-]TZH:TZM biçimindeki bir ifade veya saat dilimi uzaklığını temsil eden ve gün ışığından yararlanmaya duyarlı ve ayarlanmış olduğu varsayılan imzalı bir tamsayı (dakika).

Dönüş türleri

datetimeoffset_expression bağımsız değişkeninin kesirli duyarlığıyla datetimeoffset.

Açıklamalar

İlk olarak depolanan saat dilimi uzaklığından farklı bir saat dilimi uzaklığında SWITCHOFFSET değeri seçmek için kullanın. SWITCHOFFSET depolanan time_zone değerini güncelleştirmez.

SWITCHOFFSET bir datetimeoffset sütununu güncelleştirmek için kullanılabilir.

SWITCHOFFSET işleviyle GETDATE() kullanmak sorgunun yavaş çalışmasına neden olabilir. Bunun nedeni, sorgu iyileştiricisinin tarih saat değeri için doğru kardinalite tahminlerini alamamasıdır. Bu sorunu çözmek için, sorgu ipucunu OPTION (RECOMPILE) kullanarak sorgu iyileştiricisini aynı sorgu bir sonraki yürütülişinde sorgu planını yeniden derlemeye zorlayın. İyileştirici daha sonra doğru kardinalite tahminlerine sahiptir ve daha verimli bir sorgu planı oluşturur. Sorgu ipucu hakkında RECOMPILE daha fazla bilgi için bkz. Sorgu ipuçları.

DECLARE @dt AS DATETIMEOFFSET = switchoffset(CONVERT (DATETIMEOFFSET, GETDATE()), '-04:00');

SELECT *
FROM t
WHERE c1 > @dt
OPTION (RECOMPILE);

Örnekler

Aşağıdaki örnek, veritabanında depolanan değerden farklı bir saat dilimi uzaklığını görüntülemek için kullanır 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