Di MariaDB, CONVERT_TZ() adalah fungsi tanggal dan waktu bawaan yang mengubah nilai waktu-tanggal dari satu zona waktu ke zona waktu lainnya.
Saat Anda memanggil fungsi, Anda memberikan tiga argumen:waktu, zona waktu untuk mengonversi dari , dan zona waktu untuk mengonversi menjadi .
Sintaks
Sintaksnya seperti ini:
CONVERT_TZ(dt,from_tz,to_tz)
Dimana dt adalah ekspresi datetime, from_tz adalah zona waktu untuk mengonversi dari , dan to_tz adalah zona waktu untuk mengubah menjadi .
Contoh
Ini contohnya:
SELECT CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00'); Hasil:
+-------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00') |
+-------------------------------------------------------+
| 2021-05-10 11:00:00 |
+-------------------------------------------------------+ Di sini, zona waktu aslinya adalah +00:00, dan kami mengubahnya menjadi +10:00.
Inilah yang terjadi jika kita menggunakan zona waktu awal yang berbeda:
SELECT CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00'); Hasil:
+-------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00') |
+-------------------------------------------------------+
| 2021-05-10 08:00:00 |
+-------------------------------------------------------+ Zona Waktu Bernama
Zona waktu yang disebutkan dapat digunakan, tetapi ini mengharuskan berbagai tabel zona waktu telah dimuat.
Inilah yang terjadi jika tabel zona waktu tidak diisi:
SELECT
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham'); Hasil:
+-------------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') |
+-------------------------------------------------------------+
| NULL |
+-------------------------------------------------------------+
Hasilnya adalah null , karena tidak ada data zona waktu di tabel zona waktu.
Ini kueri yang sama lagi, tapi kali ini dengan data di tabel zona waktu:
SELECT
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham'); Hasil:
+-------------------------------------------------------------+
| CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') |
+-------------------------------------------------------------+
| 2021-05-10 13:45:00 |
+-------------------------------------------------------------+ Nilai Tanggal Waktu Di Luar Rentang
Tidak ada konversi yang akan terjadi jika nilainya berada di luar TIMESTAMP yang didukung rentang ('1970-01-01 00:00:01' ke '2038-01-19 05:14:07' UTC) saat dikonversi dari from_tz ke UTC.
Contoh:
SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00'); Hasil:
+-------------------------------------------------------+
| CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00') |
+-------------------------------------------------------+
| 2040-05-10 01:00:00 |
+-------------------------------------------------------+ Argumen Tidak Valid
Jika ada argumen yang tidak valid, CONVERT_TZ() mengembalikan null .
Contoh:
SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00'); Hasil:
+-------------------------------------------------------+
| CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00') |
+-------------------------------------------------------+
| NULL |
+-------------------------------------------------------+
Dalam hal ini, saya mencoba mengonversi ekspresi datetime ke zona waktu yang tidak valid (+90:00 ), dan jadi null dikembalikan.
Argumen Null
Jika ada argumen null , hasilnya null :
SELECT
CONVERT_TZ(null, '+00:00', '+90:00') AS "1",
CONVERT_TZ('2021-05-10 01:00:00', null, '+90:00') AS "2",
CONVERT_TZ('2021-05-10 01:00:00', '+00:00', null) AS "3"; Hasil:
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
Argumen Tidak Ada
Memanggil CONVERT_TZ() dengan jumlah argumen yang salah, atau tanpa memberikan argumen apa pun menghasilkan kesalahan:
SELECT CONVERT_TZ(); Hasil:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONVERT_TZ'