Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitik 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