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'