MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Bagaimana CONVERT_TZ() Bekerja di MariaDB

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'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana SPACE() Bekerja di MariaDB

  2. 4 Cara Memeriksa Tipe Data Kolom di MariaDB

  3. MariaDB DATABASE() Dijelaskan

  4. Membandingkan RDS vs EC2 untuk Mengelola MySQL atau MariaDB di AWS

  5. Bagaimana DAYOFYEAR() Bekerja di MariaDB