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:
DATE_FORMAT(nama_kolom, 'string format')
Sebagai contoh, saya akan memformat kolom dt dari tabel belajar_date agar ditampilkan dengan format: hari/bulan/tahun:
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:
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.
butuh juga gan kalau lagi di butuhkan
Nuhun Kang sudah dishare, keep posting ya. Semangat kang!
Terimakasih dukungannya mas, semoga bisa bermanfaat.. :)
Hatur Nuhun pisan "Dunialkom.com" yang berbagi ilmunya untuk para pembaca. :)
Sama2 gan.. semoga bisa bermanfaat :)
mau tanya.. saya kan mau rekap data berdasarkan hari gan. nah itu biar cuma ambil date nya aja gmn ya? saya pake timestamp. mohon maaf masih bingung pengaplikasianny..
Mengambil "date" ini seperti apa y gan? menurut saya tinggal sesuaikan saja dengan penjelasan yang ada di tutorial ini. Jika pengen ambil "tanggal" saja, mungkin bisa seperti ini:
SELECT DATE_FORMAT(dt, '%d') FROM belajar_date;
cara settingnya lewat navicat atau lewat localhost?
Maksudnya setting apa y gan? fungsi DATE_FORMAT ini sudah bawaan dari MySQL, jadi g perlu ada pengaturan khusus.
ini cara ngerubahnya dari mana ya mas,mohon bantuannya saya awam banget :)
bantu jawab mas
– buka halaman cmd (tekan logo windows+R)
– ketik dihalaman cmd -> cd c:/xampp/mysql/bin —–> (tekan enter)
– kemudian ketik lagi di cmd -> mysql -u root -p —–> (tekan enter)
– silahkan isi password jika mysql nya di password jika tidak tekan enter
– terus pilih databasenya caranya ketik di cmd -> use "nama_databasenya"
kalo cara diatas sudah dilakukan tinggal ikutin aja tutor di artikel ini… salam sukses mas
Terimakasih sudah bantu jawab :)
selamat pagi gan. saya mau tanya bagaimana membuat create database berdasarkan bulan dan tahun. contohnya : data217 (data bulan 2 tahun 2017), terima kasih
Membuat database atau tabel gan? membuat banyak database seperti itu g umum dipakai. Biasanya 1 project hanya menggunakan 1 database saja. Baru di dalamnya mau ada ratusan tabel g ada masalah. Tp kalau agan butuh buat beberapa database dalam 1 project, bisa dipikirkan lagi konsep logika programnya (kemungkinan besar ada yang salah).
Di PHP tanggal bisa digenerate menggunakan fungsi date(). Nanti bisa disambung menjadi string dan diinput ke dalam query SQL untuk function mysqli_query(). Untuk tutorial date() PHP saat ini belum ada di website duniailkom (baru tersedia di buku PHP Uncover).
Artikel sangat membantu, tetapi saya ada pertanyaan. Pada keterangan di atas menampilkan bulan berbahasa Inggris. Bagaimana bulan bisa menjadi Bahasa Indonesia?? (contoh bulan : August == Agustus)
Terima kasih.
Jika pengen diubah menjadi bahasa Indonesia, kita harus buat kode program sendiri. Misalnya nanti di PHP bisa menggunakan kondisi if else. If ($bulan == "August"), maka echo "Agustus".
kasih contoh untuk bulan indonesia dong, tapi datanya diambil dari database.
Bisa dengan cara mengubah settingan bahasa MySQL, caranya jalankan perintah "SET lc_time_names = 'id_ID';", otomatis seluruh fungsi DATE_FORMAT() akan menggunakan bahasa indonesia.
Halo agan apakah ebook nya itu disertakan dengan file projek untuk pembelajaran… Seperti file latihan gan?
Isi dari eBook MySQL Uncover lebih fokus ke materi, kurang lebih seperti tutorial yang ada di duniailkom saat ini, namun dengan pembahasan yang lebih detail. Latihannya ada, tapi tidak terlalu banyak…
coba kalo di sqlite online tuh gmna kang buat syntax nya ?
Jika menggunakan SQLite, kemungkinan penulisan perintahnya berbeda dengan MySQL / MariaDB, karena sudah beda aplikasi.
Untuk fungsi pengolahan tanggal di SQLite, bisa lanjut ke https://sqlite.org/lang_datefunc.html