Bagikan melalui


SWITCHOFFSET (Transact-SQL)

Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

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 (Transact-SQL).

Konvensi sintaks transact-SQL

Sintaks

SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )   

Argumen

datetimeoffset_expression
Adalah ekspresi yang dapat diselesaikan ke nilai datetimeoffset(n).

timezoneoffset_expression
Adalah 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.

Jenis Hasil

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 petunjuk kueri OPTION (RECOMPILE) untuk memaksa pengoptimal kueri mengkombinasikan ulang rencana kueri lain kali kueri yang sama dijalankan. Pengoptimal kemudian akan memiliki perkiraan kardinalitas yang akurat dan akan menghasilkan rencana kueri yang lebih efisien. Untuk informasi selengkapnya tentang petunjuk kueri RECOMPILE, lihat Petunjuk Kueri (Transact-SQL).

DECLARE @dt 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  

Lihat Juga

CAST dan CONVERT (Transact-SQL)
PADA ZONA WAKTU (T-SQL)