MariaDB menyertakan banyak unit tanggal dan waktu yang dapat Anda gunakan saat bekerja dengan nilai tanggal dan waktu. Misalnya, MONTH
adalah satu unit, dan HOUR
adalah unit lain.
Beberapa unit adalah unit komposit. Unit komposit adalah ketika dua unit digabungkan menjadi satu. Konvensi penamaan adalah bahwa setiap nama unit dipisahkan oleh garis bawah. Misalnya, MINUTE_SECOND
adalah untuk menit dan detik.
Berikut adalah beberapa contoh yang menunjukkan cara kerja unit komposit di MariaDB.
Daftar Unit Komposit
Pertama, berikut adalah daftar unit komposit yang tersedia di MariaDB:
Satuan | Deskripsi |
---|---|
SECOND_MICROSECOND | Detik.Mikrodetik |
MINUTE_MICROSECOND | Menit.Detik.Mikrodetik |
MINUTE_SECOND | Menit.Detik |
HOUR_MICROSECOND | Jam.Menit.Detik.Mikrodetik |
HOUR_SECOND | Jam.Menit.Detik |
HOUR_MINUTE | Jam.Menit |
DAY_MICROSECOND | Hari Jam.Menit.Detik.Mikrodetik |
DAY_SECOND | Hari Jam.Menit.Detik |
DAY_MINUTE | Hari Jam.Menit |
DAY_HOUR | Hari Jam |
YEAR_MONTH | Tahun-Bulan |
Hanya dengan melihat nama mereka memberikan petunjuk yang cukup bagus tentang apa yang mereka lakukan.
Unit komposit (seperti halnya unit tanggal/waktu) dapat digunakan saat mengekstrak bagian dari nilai tanggal/waktu, dan juga saat melakukan hal-hal seperti menambah dan mengurangi interval waktu ke nilai tanggal/waktu.
Ini dapat digunakan dengan +
dan -
operator saat melakukan aritmatika pada tanggal, dengan fungsi seperti ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
, EXTRACT()
, TIMESTAMPADD()
, dan TIMESTAMPDIFF()
.
Mereka juga dapat digunakan di ON SCHEDULE
klausa dari CREATE_EVENT()
dan ALTER_EVENT()
fungsi.
Contoh – Mengekstrak Unit Komposit
Unit tanggal dan waktu dapat digunakan dengan banyak fungsi yang berbeda dan dalam berbagai konteks lainnya. Salah satu fungsi yang menerima unit ini adalah EXTRACT()
fungsi. Fungsi ini mengembalikan unit tanggal/waktu tertentu dari tanggal atau nilai waktu tertentu.
Berikut ini contoh penggunaan unit komposit untuk mengekstrak tahun dan bulan dari tanggal:
SELECT EXTRACT(YEAR_MONTH FROM '2030-12-25');
Hasil:
+---------------------------------------+ | EXTRACT(YEAR_MONTH FROM '2030-12-25') | +---------------------------------------+ | 203012 | +---------------------------------------+
Kita dapat melihat bahwa tahun dan bulan dikembalikan sebagai satu nilai.
Contoh – Menambah/Mengurangi Satuan Komposit
Unit komposit juga dapat digunakan untuk menambah dan mengurangi interval tanggal dan waktu.
Contoh:
SELECT '2030-12-25' + INTERVAL '2:08' DAY_HOUR;
Hasil:
+-----------------------------------------+ | '2030-12-25' + INTERVAL '2:08' DAY_HOUR | +-----------------------------------------+ | 2030-12-27 08:00:00 | +-----------------------------------------+
Dalam hal ini, ada dua bagian yang harus diperhatikan sehubungan dengan unit komposit.
Seperti pada contoh sebelumnya, kami menggunakan unit komposit (dalam hal ini DAY_HOUR
). Sehubungan dengan interval yang sebenarnya untuk ditambahkan, kami menggunakan titik dua untuk memisahkan setiap sisi unit komposit.
Dalam hal ini kami menentukan '2:08'
, yang menambahkan 2 hari dan 8 jam ke nilai tanggal. Tanggal asli tidak memiliki porsi waktu, jadi diasumsikan bahwa waktu awal adalah 00:00:00
.
MariaDB cukup memaafkan dengan ketatnya format. Kita bisa mendapatkan efek yang sama dengan menggunakan pemisah yang berbeda, dan juga dengan menghilangkan nol di depan.
Berikut contoh lain yang menggunakan DATE_ADD()
fungsi dengan berbagai interval waktu:
SELECT DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR);
Hasil:
+-------------------------------------------------+ | DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR) | +-------------------------------------------------+ | 2030-12-27 08:00:00 | +-------------------------------------------------+
Berikut adalah beberapa contoh lagi dari berbagai unit komposit:
SELECT
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Hasil:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 | +---------------------+---------------------+---------------------+