Tutorial MySQL Lanjutan
10. Memformat Tampilan Tanggal
Tutorial Belajar MySQL: Cara Memformat Tampilan Tanggal MySQL (DATE_FORMAT)
Secara default, MySQL menyimpan tipe data tanggal (DATE) dengan format YYYY-MM-DD dan tipe data TIMESTAMP dengan format YYYY-MM-DD HH:MM:SS. Format default ini tidak cocok untuk tampilan akhir.
Pada tutorial belajar MySQL kali ini saya akan membahas fungsi DATE_FORMAT() yang bisa digunakan untuk mengubah tampilan tipe data DATE dan TIMESTAMP.
Format Dasar Fungsi DATE_FORMAT() MySQL
Fungsi DATE_FORMAT() sangat fleksibel untuk menampilkan output tanggal dari sebuah tabel MySQL. Fungsi ini membutuhkan 2 buah argumen, yakni kolom tabel yang ingin di-format dan ‘string format’ tanggal.
Berikut format dasar fungsi DATE_FORMAT MySQL:
1 | DATE_FORMAT(nama_kolom, ‘string format’) |
Sebagai contoh, saya akan memformat kolom dt dari tabel belajar_date agar ditampilkan dengan format: hari/bulan/tahun:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | mysql> SELECT * FROM belajar_date;+------------+---------------------+| dt | ts |+------------+---------------------+| 2015-08-10 | 2015-08-10 08:30:15 || 2016-08-17 | 2016-08-17 10:01:01 || 2017-12-31 | 2017-12-31 23:59:59 || 2015-08-04 | 2015-08-04 15:34:14 |+------------+---------------------+4 rows in set (0.00 sec) mysql> SELECT DATE_FORMAT(dt, '%d/%m/%Y') FROM belajar_date;+-----------------------------+| DATE_FORMAT(dt, '%d/%m/%Y') |+-----------------------------+| 10/08/2015 || 17/08/2016 || 31/12/2017 || 04/08/2015 |+-----------------------------+4 rows in set (0.00 sec) |
Dapat terlihat hasil query SELECT DATE_FORMAT(dt, ‘%d/%m/%Y’) FROM belajar_date akan menghasilkan kolom dt dengan tampilan yang umum kita gunakan di Indonesia.
Bagaimana cara membuat ‘string format’ ini? Kita harus merangkainya menggunakan karakter khusus sesuai dengan tabel berikut:
| Format | Penjelasan |
|---|---|
| %a | Abbreviated weekday name (Sun..Sat) |
| %b | Abbreviated month name (Jan..Dec) |
| %c | Month, numeric (0..12) |
| %D | Day of the month with English suffix (0th, 1st, 2nd, 3rd, …) |
| %d | Day of the month, numeric (00..31) |
| %e | Day of the month, numeric (0..31) |
| %f | Microseconds (000000..999999) |
| %H | Hour (00..23) |
| %h | Hour (01..12) |
| %I | Hour (01..12) |
| %i | Minutes, numeric (00..59) |
| %j | Day of year (001..366) |
| %k | Hour (0..23) |
| %l | Hour (1..12) |
| %M | Month name (January..December) |
| %m | Month, numeric (00..12) |
| %p | AM or PM |
| %r | Time, 12-hour (hh:mm:ss followed by AM or PM) |
| %S | Seconds (00..59) |
| %s | Seconds (00..59) |
| %T | Time, 24-hour (hh:mm:ss) |
| %U | Week (00..53), where Sunday is the first day of the week; WEEK() mode 0 |
| %u | Week (00..53), where Monday is the first day of the week; WEEK() mode 1 |
| %V | Week (01..53), where Sunday is the first day of the week; WEEK() mode 2; used with %X |
| %v | Week (01..53), where Monday is the first day of the week; WEEK() mode 3; used with %x |
| %W | Weekday name (Sunday..Saturday) |
| %w | Day of the week (0=Sunday..6=Saturday) |
| %X | Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V |
| %x | Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v |
| %Y | Year, numeric, four digits |
| %y | Year, numeric (two digits) |
| %% | A literal “%” character |
| %x | x, for any “x” not listed above |
Cara Penggunaan Fungsi DATE_FORMAT() MySQL
Berdasarkan tabel diatas, kita bisa merangkai format apapun tergantung kebutuhan. Sebagai contoh, jika saya ingin membuat tampilan seperti: ‘10 – 08 – 2015’, maka string formatnya adalah: ‘%d – %m – %Y’. Atau jika saya ingin tampilannya menjadi ‘10 August 2015’, maka string formatnya menggunakan: ‘%d %M %Y’.
Berikut beberapa contoh praktek merangkai ‘string_format’ menggunakan tabel belajar_date:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | mysql> SELECT DATE_FORMAT(dt, '%d - %m - %Y') FROM belajar_date;+---------------------------------+| DATE_FORMAT(dt, '%d - %m - %Y') |+---------------------------------+| 10 - 08 - 2015 || 17 - 08 - 2016 || 31 - 12 - 2017 || 04 - 08 - 2015 |+---------------------------------+4 rows in set (0.00 sec)mysql> SELECT DATE_FORMAT(dt, '%d %M %Y') FROM belajar_date;+-----------------------------+| DATE_FORMAT(dt, '%d %M %Y') |+-----------------------------+| 10 August 2015 || 17 August 2016 || 31 December 2017 || 04 August 2015 |+-----------------------------+4 rows in set (0.00 sec)mysql> SELECT DATE_FORMAT(ts, '%d %M %Y, %k:%i:%s') FROM belajar_date;+---------------------------------------+| DATE_FORMAT(ts, '%d %M %Y, %k:%i:%s') |+---------------------------------------+| 10 August 2015, 8:30:15 || 17 August 2016, 10:01:01 || 31 December 2017, 23:59:59 || 04 August 2015, 15:34:14 |+---------------------------------------+4 rows in set (0.03 sec) |
Pada query terakhir, saya men-format tampilan kolom ts. Kolom ini menggunakan tipe data TIMESTAMP, sehingga kita juga bisa menformat bagian time-nya.
Dalam tutorial belajar MySQL kali ini kita telah membahas cara penggunaan fungsi DATE_FORMAT. Dengan fungsi ini, tipe data DATE dan TIMESTAMP MySQL bisa ditampilkan sesuai kebutuhan.