Di MySQL, DATE_FORMAT()
fungsi memungkinkan Anda untuk memformat tanggal dan waktu.
Ini contohnya:
SELECT DATE_FORMAT('2018-12-01', '%W, %d %M %Y');
Hasil:
Saturday, 01 December 2018
Dalam contoh ini, %W
adalah untuk nama hari kerja, %d
adalah untuk hari dalam sebulan, %M
adalah untuk Bulan, dan %Y
adalah untuk Tahun. Ada banyak lagi penentu format yang tersedia yang memungkinkan Anda menentukan format yang tepat untuk tanggal, serta komponen waktu.
Memformat Komponen Waktu
Berikut ini contoh pemformatan komponen waktu:
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p');
Hasil:
11:03:15 AM
Dalam contoh ini, %p
digunakan untuk menampilkan AM atau PM, tergantung kasusnya.
Tentu saja, Anda dapat menggabungkannya untuk memformat tanggal dan waktu sekaligus:
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p, %W, %d %M %Y');
Hasil:
11:03:15 AM, Saturday, 01 December 2018
Memformat dengan Fungsi Tanggal/Waktu
Seringkali Anda ingin menggunakan DATE_FORMAT()
bersama dengan fungsi tanggal/waktu lainnya. Misalnya, Anda dapat menggunakannya bersama dengan CURDATE()
untuk mengembalikan tanggal saat ini, diformat dengan baik:
SELECT CURDATE() AS Unformatted, DATE_FORMAT(CURDATE(), '%W, %M %d, %Y') AS Formatted;
Hasil:
+-------------+----------------------+ | Unformatted | Formatted | +-------------+----------------------+ | 2018-05-04 | Friday, May 04, 2018 | +-------------+----------------------+
Anda juga dapat melakukannya dengan NOW()
berfungsi jika Anda membutuhkan waktu:
SELECT NOW() AS Unformatted, DATE_FORMAT(NOW(), '%r') AS Formatted;
Hasil:
+---------------------+-------------+ | Unformatted | Formatted | +---------------------+-------------+ | 2018-05-04 14:33:52 | 02:33:52 PM | +---------------------+-------------+
Fungsi TIME_FORMAT()
MySQL juga memiliki TIME_FORMAT()
fungsi yang dapat digunakan untuk memformat waktu. Fungsi ini bekerja mirip dengan DATE_FORMAT()
kecuali bahwa TIME_FORMAT()
hanya menerima penentu format hanya untuk jam, menit, detik, dan mikrodetik.
Contoh:
SET @time = '07:35:10'; SELECT TIME_FORMAT(@time, '%H') AS Hour, TIME_FORMAT(@time, '%i') AS Minute, TIME_FORMAT(@time, '%s') As Seconds, TIME_FORMAT(@time, '%p') AS 'AM or PM';
Hasil:
+------+--------+---------+----------+ | Hour | Minute | Seconds | AM or PM | +------+--------+---------+----------+ | 07 | 35 | 10 | AM | +------+--------+---------+----------+
Fungsi STR_TO_DATE()
STR_TO_DATE()
fungsi adalah kebalikan dari DATE_FORMAT()
fungsi. Ini memungkinkan Anda untuk memberikan string yang akan diformat sebagai tanggal. Ia menerima dua parameter; string, dan formatnya.
Ini contohnya:
SELECT STR_TO_DATE('Saturday, 6 December 2018', '%W, %d %M %Y') AS Date;
Hasil:
+------------+ | Date | +------------+ | 2018-12-06 | +------------+
Cara Menemukan Format Tanggal yang Benar
MySQL memiliki fungsi kecil yang berguna yang disebut GET_FORMAT()
. Fungsi ini membantu Anda menemukan format yang benar untuk digunakan saat menggunakan DATE_FORMAT()
fungsi dan/atau STR_TO_DATE()
fungsi .
Begini cara kerjanya:
SELECT GET_FORMAT(DATE, 'USA');
Ini menghasilkan sebagai berikut:
%m.%d.%Y
Yang memberi tahu kita format string yang perlu kita gunakan saat memformat tanggal dengan DATE_FORMAT()
fungsi. Misalnya, kita dapat mengambil hasil dari contoh itu dan menerapkannya ke DATE_FORMAT()
fungsi:
SELECT DATE_FORMAT(NOW(), '%m.%d.%Y');
Dan kita akan mendapatkan hasil yang diinginkan:
05.04.2018
Anda juga dapat melewati GET_FORMAT()
langsung ke DATE_FORMAT()
jika Anda mau.
SELECT DATE_FORMAT(NOW(), GET_FORMAT(DATE, 'USA'));
Hasil:
05.04.2018
Bagaimanapun, di bawah ini adalah contoh dengan berbagai opsi.
Tanggal
SELECT GET_FORMAT(DATE, 'USA') AS USA, GET_FORMAT(DATE, 'JIS') AS JIS, GET_FORMAT(DATE, 'ISO') AS ISO, GET_FORMAT(DATE, 'EUR') AS EUR, GET_FORMAT(DATE, 'INTERNAL') AS INTERNAL;
Hasil:
+----------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +----------+----------+----------+----------+----------+ | %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d | +----------+----------+----------+----------+----------+
Tanggal-waktu
SELECT GET_FORMAT(DATETIME, 'USA') AS USA, GET_FORMAT(DATETIME, 'JIS') AS JIS, GET_FORMAT(DATETIME, 'ISO') AS ISO, GET_FORMAT(DATETIME, 'EUR') AS EUR, GET_FORMAT(DATETIME, 'INTERNAL') AS INTERNAL;
Hasil:
+-------------------+-------------------+-------------------+-------------------+--------------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------------+-------------------+-------------------+-------------------+--------------+ | %Y-%m-%d %H.%i.%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H.%i.%s | %Y%m%d%H%i%s | +-------------------+-------------------+-------------------+-------------------+--------------+
Waktu
SELECT GET_FORMAT(TIME, 'USA') AS USA, GET_FORMAT(TIME, 'JIS') AS JIS, GET_FORMAT(TIME, 'ISO') AS ISO, GET_FORMAT(TIME, 'EUR') AS EUR, GET_FORMAT(TIME, 'INTERNAL') AS INTERNAL;
Hasil:
+-------------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------+----------+----------+----------+----------+ | %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s | +-------------+----------+----------+----------+----------+