Di SQL Server, Anda dapat menggunakan TODATETIMEOFFSET()
berfungsi untuk mengembalikan datetimeoffset nilai yang diterjemahkan dari datetime2 ekspresi. Ia menerima dua argumen; tanggal, dan offset yang ingin Anda terapkan pada tanggal tersebut.
Di bawah ini adalah contoh penggunaannya.
Sintaks
Sintaks TODATETIMEOFFSET()
seperti ini:
TODATETIMEOFFSET ( expression , time_zone )
Dimana expression
adalah ekspresi yang menghasilkan datetime2 nilai, dan time_zone
adalah zona waktu yang ingin Anda terapkan pada ekspresi tersebut (tanggal).
Anda dapat memberikan zona waktu dalam hitungan menit atau jam. Jika Anda memberikannya dalam hitungan menit, gunakan bilangan bulat (mis. -120
), jika tidak, untuk menyediakannya dalam hitungan jam, gunakan string (mis. '+04.00'
). Rentang untuk zona waktu adalah +14 hingga -14 (jam).
Selain itu, tanggal yang Anda berikan ditafsirkan dalam waktu lokal untuk zona waktu yang ditentukan.
Contoh 1
Berikut adalah contoh dasar penggunaan:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;
Hasil:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 +08:00
Contoh 2 – Nilai Negatif
Ini sama dengan contoh sebelumnya, hanya saja saya menggunakan nilai negatif sebagai gantinya:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;
Hasil:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -08:00
Contoh 3 – Menggunakan Variabel datetime2
Dalam contoh ini, saya secara eksplisit menetapkan variabel dengan datetime2 nilai, lalu terapkan TODATETIMEOFFSET()
dengan nilai itu, dan bandingkan nilainya:
DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Hasil:
Original Date +08:00 --------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00
Seperti yang dapat kita lihat dengan contoh ini (dan yang sebelumnya), nilai tanggal asli tidak memiliki waktu tanggal informasi offset (karena ini adalah datetime2 value), tetapi setelah kita menjalankannya melalui TODATETIMEOFFSET()
fungsi, kita berakhir dengan datetimeoffset tipe data.
Contoh 4 – Menggunakan Variabel datetimeoffset
Ini mirip dengan contoh sebelumnya, kecuali bahwa tanggal asli disetel sebagai datetimeoffset nilai:
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Hasil:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00
Contoh 5 – Menggunakan Tanggal/Waktu Saat Ini
Dalam contoh ini, saya memasukkan SYSDATETIMEOFFSET()
berfungsi sebagai ekspresi tanggal. Fungsi ini menghasilkan tanggal/waktu saat ini dari komputer yang menjalankan instance SQL Server:
SELECT SYSDATETIMEOFFSET() AS 'Current Date', TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Hasil:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00
Contoh 6 – Memberikan Offset Zona Waktu sebagai Integer
Seperti yang disebutkan, Anda juga dapat memberikan offset zona waktu sebagai bilangan bulat, bukan string:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;
Hasil:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -03:00