MariaDB memiliki beberapa fungsi yang memungkinkan Anda mengekstrak berbagai bagian tanggal dan waktu dari nilai tanggal/waktu. Anda dapat menggunakan ini untuk memisahkan setiap komponen tanggal/waktu ke dalam kolomnya sendiri jika diperlukan.
Di bawah ini adalah empat cara untuk mengekstrak jam, menit, dan detik dari nilai waktu di MariaDB. Sebagai bonus, kami juga akan menyertakan mikrodetik.
HOUR()
, MINUTE()
, SECOND()
dan MICROSECOND()
Fungsi
HOUR()
, MINUTE()
, dan SECOND()
fungsi mengekstrak jam, menit, dan detik dari tanggal atau nilai datetime masing-masing.
Dan jika Anda bekerja dengan presisi yang lebih tinggi, Anda dapat menggunakan MICROSECOND()
berfungsi untuk mengembalikan bagian mikrodetik.
Berikut ini contoh penggunaan fungsi ini untuk mengembalikan setiap komponen waktu di kolomnya sendiri:
SELECT
HOUR('10:45:30.123456') AS "Hours",
MINUTE('10:45:30.123456') AS "Minutes",
SECOND('10:45:30.123456') AS "Seconds",
MICROSECOND('10:45:30.123456') AS "Microseconds";
Hasil:
+-------+---------+---------+--------------+ | Hours | Minutes | Seconds | Microseconds | +-------+---------+---------+--------------+ | 10 | 45 | 30 | 123456 | +-------+---------+---------+--------------+
TIME
nilai bisa dalam rentang '-838:59:59.999999'
ke '838:59:59.999999'
.
TIME
nilai juga bisa negatif. Dalam kasus seperti itu, nilai yang dikembalikan masih positif.
Berikut adalah nilai waktu negatif:
SELECT
HOUR('-10:45:30.123456') AS "Hours",
MINUTE('-10:45:30.123456') AS "Minutes",
SECOND('-10:45:30.123456') AS "Seconds",
MICROSECOND('-10:45:30.123456') AS "Microseconds";
Hasil:
+-------+---------+---------+--------------+ | Hours | Minutes | Seconds | Microseconds | +-------+---------+---------+--------------+ | 10 | 45 | 30 | 123456 | +-------+---------+---------+--------------+
EXTRACT()
Fungsi
EXTRACT()
fungsi memungkinkan Anda untuk mengekstrak unit tertentu dari nilai tanggal/waktu. Oleh karena itu, Anda dapat menggunakannya untuk mengekstrak jam, menit, detik, dan mikrodetik dari nilai waktu.
Contoh:
SELECT
EXTRACT(HOUR FROM '10:45:30.123456') AS "Hours",
EXTRACT(MINUTE FROM '10:45:30.123456') AS "Minutes",
EXTRACT(SECOND FROM '10:45:30.123456') AS "Seconds",
EXTRACT(MICROSECOND FROM '10:45:30.123456') AS "Microseconds";
Hasil:
+-------+---------+---------+--------------+ | Hours | Minutes | Seconds | Microseconds | +-------+---------+---------+--------------+ | 10 | 45 | 30 | 123456 | +-------+---------+---------+--------------+
TIME_FORMAT()
Fungsi
TIME_FORMAT()
fungsi memungkinkan Anda untuk memformat nilai waktu berdasarkan string format. String format menentukan bagaimana waktu harus diformat.
Karena itu Anda dapat menggunakan fungsi ini untuk mengembalikan berbagai bagian waktu secara terpisah.
Contoh:
SELECT
TIME_FORMAT('10:07:30.123456', '%H') AS "Hours",
TIME_FORMAT('10:07:30.123456', '%i') AS "Minutes",
TIME_FORMAT('10:07:30.123456', '%s') AS "Seconds",
TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds";
Hasil:
+-------+---------+---------+--------------+ | Hours | Minutes | Seconds | Microseconds | +-------+---------+---------+--------------+ | 10 | 07 | 30 | 123456 | +-------+---------+---------+--------------+
Anda juga dapat mengembalikan semua komponen waktu secara terpisah, tetapi dalam kolom yang sama.
Ini contoh yang saya maksud:
SELECT TIME_FORMAT('10:07:30.123456', '%H %i %s %f');
Hasil:
+-----------------------------------------------+ | TIME_FORMAT('10:07:30.123456', '%H %i %s %f') | +-----------------------------------------------+ | 10 07 30 123456 | +-----------------------------------------------+
TIME_FORMAT()
fungsi menerima subset format string yang dapat digunakan dengan DATE_FORMAT()
fungsi.
Ada beberapa kemungkinan penentu format untuk bagian jam. Penentu format yang digunakan di atas mengembalikan jam dengan dua digit di antara 00
dan 23
. Lihat MariaDB Format Strings untuk daftar lengkap format string/specifier yang dapat digunakan dengan DATE_FORMAT()
. TIME_FORMAT()
fungsi hanya menerima penentu format untuk jam, menit, dan detik/sub detik. Penentu format lainnya menghasilkan null
atau 0
dikembalikan.
DATE_FORMAT()
Fungsi
DATE_FORMAT()
fungsi memungkinkan Anda untuk memformat tanggal atau nilai datetime berdasarkan string format. String format menentukan bagaimana tanggal/waktu harus diformat.
Oleh karena itu, kami dapat menggunakan penentu format yang sama dengan yang kami gunakan dengan TIME_FORMAT()
fungsi pada contoh sebelumnya. Namun, DATE_FORMAT()
tidak menerima TIME
nilai, jadi kita harus melewati DATETIME
nilai.
SELECT
DATE_FORMAT('2023-01-01 10:07:30.123456', '%H') AS "Hours",
DATE_FORMAT('2023-01-01 10:07:30.123456', '%i') AS "Minutes",
DATE_FORMAT('2023-01-01 10:07:30.123456', '%s') AS "Seconds",
DATE_FORMAT('2023-01-01 10:07:30.123456', '%f') AS "Microseconds";
Hasil:
+-------+---------+---------+--------------+ | Hours | Minutes | Seconds | Microseconds | +-------+---------+---------+--------------+ | 10 | 07 | 30 | 123456 | +-------+---------+---------+--------------+
Melewati TIME
nilai tidak berfungsi dengan fungsi ini:
SELECT
DATE_FORMAT('10:07:30.123456', '%H') AS "Hours",
DATE_FORMAT('10:07:30.123456', '%i') AS "Minutes",
DATE_FORMAT('10:07:30.123456', '%s') AS "Seconds",
DATE_FORMAT('10:07:30.123456', '%f') AS "Microseconds";
Hasil:
+-------+---------+---------+--------------+ | Hours | Minutes | Seconds | Microseconds | +-------+---------+---------+--------------+ | NULL | NULL | NULL | NULL | +-------+---------+---------+--------------+ 1 row in set, 4 warnings (0.003 sec)
Mari kita lihat peringatannya:
SHOW WARNINGS;
Hasil:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Incorrect datetime value: '10:07:30.123456' | | Warning | 1292 | Incorrect datetime value: '10:07:30.123456' | | Warning | 1292 | Incorrect datetime value: '10:07:30.123456' | | Warning | 1292 | Incorrect datetime value: '10:07:30.123456' | +---------+------+---------------------------------------------+