Dipecahkan: ubah utc ke est

Pembaharuan Terakhir: 09/13/2023

Bekerja dengan UTC (Waktu Universal Terkoordinasi) di SQL bisa jadi sedikit rumit, terutama jika Anda perlu mengonversinya ke zona waktu yang berbeda, seperti EST (Waktu Standar Timur) misalnya. Ini bahkan lebih rumit jika Anda mempertimbangkan waktu musim panas. Namun, dengan pemahaman dan penerapan fungsi yang benar, tugas tersebut menjadi lebih mudah. Bagian penting dari tugas ini adalah memahami konsep UTC dan EST dan bagaimana keduanya berhubungan satu sama lain.

Memahami UTC dan EST

UTC, kependekan dari Coordinated Universal Time, adalah standar waktu yang digunakan dunia untuk mengatur jamnya. Ini dianggap sebagai waktu dasar yang digunakan untuk menghitung semua zona waktu lainnya. Di sisi lain, EST mengacu pada Waktu Standar Timur, yaitu UTC-5. Artinya, ini tertinggal lima jam dari UTC. Namun, pada musim panas, waktu menjadi UTC-4.

Saat mengonversi antara dua zona waktu ini, Anda harus menggunakan fungsi SQL tertentu dan juga memenuhi waktu musim panas.

Fungsi SQL untuk Konversi Waktu

Untuk mengonversi UTC ke EST dalam SQL, Anda biasanya menggunakan fungsi DATEADD. Fungsi ini menambahkan nilai tertentu ke bagian tanggal atau waktu dari suatu tanggal. Berikut cuplikan SQL untuk ini:

SELECT DATEADD(hh, -5, GetUTCDate())

Dalam contoh ini, GetUTCDate() mendapatkan tanggal dan waktu UTC saat ini, dan fungsi DATEADD mengurangi 5 jam untuk mengubahnya menjadi EST.

Menangani Waktu Musim Panas

Kerumitan muncul karena Waktu Standar Timur menjadi Waktu Musim Panas Bagian Timur (EDT) untuk sebagian tahun. EDT hanya tertinggal 4 jam dari UTC. Oleh karena itu, diperlukan cara untuk menyesuaikan fakta ini ketika melakukan konversi.

Misalnya, cuplikan kode ini memperhitungkan waktu musim panas:

SELECT
CASE
   WHEN DATEADD(hh, -5, GetUTCDate()) BETWEEN 
       (SELECT DATEADD(hh, -5, dateadd(dd, 0-datediff(dd, 0, GetUTCDate()), 
          dbo.GetDaylightSavingsSwitchPoint_ForYear(DATEPART(YEAR,GetUTCDate()),1)))) AND 
       (SELECT DATEADD(hh, -5, dateadd(dd, 0-datediff(dd, 0, GetUTCDate()), 
          dbo.GetDaylightSavingsSwitchPoint_ForYear(DATEPART(YEAR,GetUTCDate()),2))))
   THEN DATEADD(hh, -4, GetUTCDate()) ELSE DATEADD(hh, -5, GetUTCDate())
END AS EST

Bagian tersulit dari kode ini adalah kebutuhan untuk menentukan waktu dan tanggal yang tepat mulai dan berakhirnya waktu musim panas, yang berubah dari tahun ke tahun. Ini memerlukan keahlian SQL tingkat lanjut.

Aplikasi: Penjadwalan dan Pencatatan

Memahami cara mengonversi UTC ke EST dalam SQL sangat berguna ketika berhadapan dengan sistem penjadwalan, pencatatan, dan program apa pun yang menangani tanggal dan waktu. Penerapan konversi tersebut mencakup sistem pemesanan, sistem perbankan, pencatatan peristiwa di zona waktu yang berbeda, dan masih banyak lagi.

Ini juga merupakan kunci dalam memastikan penyimpanan data historis yang akurat, karena memastikan waktu yang disimpan seragam terlepas dari variasi zona waktu.

Konversi Zona Waktu Lainnya

Selain mengonversi UTC ke EST, Anda mungkin juga perlu mengonversi UTC ke zona waktu lain. Mirip dengan di atas, Anda juga akan menggunakan fungsi DATEADD, perbedaannya adalah jumlah jam yang Anda tambahkan atau kurangi dari tanggal dan waktu UTC.

Ingat, memahami konversi zona waktu ini dan mampu menerapkannya secara akurat adalah keterampilan yang harus dimiliki oleh pengembang SQL mana pun, terutama jika aplikasi Anda menangani data dari lokasi geografis yang berbeda.

Pos terkait: