Bagikan melalui


SAKELAROFFSET (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistem Platform Analitik (PDW)Database SQL di Microsoft Fabric

Mengembalikan nilai datetimeoffset yang diubah dari offset zona waktu tersimpan ke offset zona waktu baru yang ditentukan.

Untuk gambaran umum semua jenis dan fungsi data tanggal dan waktu Transact-SQL, lihat Jenis dan fungsi data tanggal dan waktu.

Konvensi sintaks transact-SQL

Sintaks

SWITCHOFFSET ( datetimeoffset_expression , timezoneoffset_expression )

Argumen

datetimeoffset_expression

Ekspresi yang dapat diatasi ke nilai datetimeoffset(n ).

timezoneoffset_expression

Ekspresi dalam format [+|-]TZH:TZM atau bilangan bulat yang ditandatangani (menit) yang mewakili offset zona waktu, dan diasumsikan menyadari dan disesuaikan dengan penyimpanan siang hari.

Tipe pengembalian

datetimeoffset dengan presisi pecahan argumen datetimeoffset_expression .

Keterangan

Gunakan SWITCHOFFSET untuk memilih nilai datetimeoffset ke dalam offset zona waktu yang berbeda dari offset zona waktu yang awalnya disimpan. SWITCHOFFSET tidak memperbarui nilai time_zone yang disimpan.

SWITCHOFFSET dapat digunakan untuk memperbarui kolom datetimeoffset .

Menggunakan SWITCHOFFSET dengan fungsi GETDATE() dapat menyebabkan kueri berjalan lambat. Ini karena pengoptimal kueri tidak dapat memperoleh perkiraan kardinalitas yang akurat untuk nilai tanggalwaktu. Untuk mengatasi masalah ini, gunakan OPTION (RECOMPILE) petunjuk kueri untuk memaksa pengoptimal kueri menyusun ulang rencana kueri lain kali kueri yang sama dijalankan. Pengoptimal kemudian memiliki kardinalitas yang akurat memperkirakan dan menghasilkan rencana kueri yang lebih efisien. Untuk informasi selengkapnya tentang RECOMPILE petunjuk kueri, lihat Petunjuk kueri.

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

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

Contoh

Contoh berikut menggunakan SWITCHOFFSET untuk menampilkan offset zona waktu yang berbeda dari nilai yang disimpan dalam database.

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