Perintah MySQL berhubungan dengan Tanggal dan Waktu

Penanganan tanggal dan waktu merupakan hal yang cukup penting dalam suatu software basis data, termasuk MySQL. Bahkan MySQL memiliki lebih dari 50 fungsi khusus berhubungan dengan tanggal dan waktu. Selengkapnya dapat dilihat di dokumentasi resmi MySQL. Di tutorial ini, saya tidak akan membahas satu per satu fungsi tersebut, sebagian besar fungsi sudah saya jelaskan di buku gratis mysql “MySQL 5: Dari Pemula Hingga Mahir” yang saya publikasikan secara gratis beberapa waktu lalu. Namun dalam tutorial ini saya akan coba menyajikan beberapa contoh perintah MySQL berhubungan dengan tanggal dan waktu yang selama ini sering saya gunakan.
Semoga daftar berikut ini bermanfaat untuk kita semua.

(1) Fungsi untuk menampilkan tanggal dan waktu saat ini

Untuk menampilkan tanggal dan waktu saat ini (server), saya sering menggunakan fungsi NOW(). Selain itu, dapat juga menggunakan CURDATE() yang akan menghasilkan tanggal saat ini dan CURTIME() yang akan menghasilkan waktu saat ini (tanpa tanggal). Berikut ini contoh dan hasil tampilannya:
mysql> SELECT NOW(), CURDATE(), CURTIME();
+---------------------+------------+-----------+
| NOW()               | CURDATE()  | CURTIME() |
+---------------------+------------+-----------+
| 2010-09-20 22:01:22 | 2010-09-20 | 22:01:22  |
+---------------------+------------+-----------+
1 row in set (0.00 sec)

(2) Fungsi untuk Mengatur (Format) Tampilan Tanggal dan Waktu

Seperti kita ketahui bersama, format default tanggal di MySQL adalah YYYY-MM-DD. Format tersebut harus diikuti, terutama saat menyimpan nilai kedalam field yang bertipe DATE. Nah, seringkali dalam menyajikan data ke user, kita memerlukan format tanggal yang berbeda dari format tanggal default tersebut. Misalnya kita ingin menampilkan tanggal dalam format DD/MM/YYYY atau format panjang seperti ‘September 20th, 2010′. Lalu, bagaimana caranya? Saya sering menggunakan fungsi DATE_FORMAT() untuk mengatur tampilan tanggal dan waktu. Dengan fungsi ini kita dapat menampilkan tanggal dalam berbagai format. Format selengkapnya dapat dilihat di sini.
Berikut ini contohnya:
mysql> SELECT DATE_FORMAT(NOW(), '%d/%m/%Y') as tanggal1, DATE_FORMAT(NOW(), '%M %D, %Y') as tanggal2;
+------------+----------------------+
| tanggal1   | tanggal2             |
+------------+----------------------+
| 20/09/2010 | September 20th, 2010 |
+------------+----------------------+
1 row in set (0.00 sec)

(3) Fungsi untuk Memecah Tanggal dan Waktu

Dari suatu field tanggal dan waktu yang tersimpan secara lengkap, seringkali kita hanya ingin mengambil bagian tertentu saja. Misalnya hanya ingin mengambil tahun atau tanggalnya saja. Selain menggunakan fungsi DATE_FORMAT(), kita dapat memecah tanggal dengan menggunakan fungsi seperti YEAR() untuk mengambil tahun, MONTH() untuk mengambil bulan, DAY() untuk mengambil hari, HOUR() untuk mengambil jam, MINUTE() untuk mengambil menit dan SECOND() untuk mengambil detik.
Berikut ini contoh perintahnya:
mysql> SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW()), HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());
+-------------+--------------+------------+-------------+---------------+---------------+
| YEAR(NOW()) | MONTH(NOW()) | DAY(NOW()) | HOUR(NOW()) | MINUTE(NOW()) | SECOND(NOW()) |
+-------------+--------------+------------+-------------+---------------+---------------+
|        2010 |            9 |         20 |          22 |            21 |            11 |
+-------------+--------------+------------+-------------+---------------+---------------+
1 row in set (0.00 sec)

(4) Fungsi untuk Penambahan dan Pengurangan Tanggal dan Waktu

Penambahan dan Pengurangan tanggal dan waktu merupakan operasi yang sering dilakukan terhadap tanggal. Contohnya jika kita ingin mengetahui tanggal berapakah 1 minggu ke depan, atau tanggal berapakah 10 hari yang lalu. Operasi tersebut dapat menggunakan fungsi DATE_ADD() dan DATE_SUB().
Berikut ini contoh sederhananya:
mysql> SELECT CURDATE() as sekarang, DATE_ADD(CURDATE(), INTERVAL 1 WEEK) as '+ 1 minggu',
 -> DATE_SUB(CURDATE(), INTERVAL 10 DAY) as '- 10 hari';
+------------+------------+------------+
| sekarang   | + 1 minggu | - 10 hari  |
+------------+------------+------------+
| 2010-09-20 | 2010-09-27 | 2010-09-10 |
+------------+------------+------------+
1 row in set (0.00 sec)

(5) Fungsi untuk Mencari Perbedaan diantara Dua Tanggal atau Waktu

Sebelumnya, kita sudah mengenal fungsi untuk menambah dan mengurangi tanggal atau waktu dengan interval tertentu. Lalu bagaimana caranya untuk mencari perbedaan di antara dua tanggal atau waktu? Contoh sederhananya misalnya untuk mencari umur seseorang berdasarkan tanggal lahirnya. Solusinya sebenarnya cukup beragam, dapat menggunakan fungsi PERIOD_DIFF() yang akan menghasilkan selisih bulan dari dua tanggal (tanggal sekarang dan tanggal lahir), lalu tinggal dibagi dengan 12 untuk mendapatkan umur dalam tahun. Selain itu, kita juga dapat mencari tahun dari masing-masing tanggal sekarang dan tanggal lahir lalu dikurangkan. Lihat contoh perintahnya sebagai berikut:
mysql> SELECT ((year(curdate())-year('1982-06-05')) - (right(curdate(),5) < right('1982-06-05',5))) as umur;
+------+
| umur |
+------+
|   28 |
+------+
1 row in set (0.00 sec)
Demikian 5 Variasi Perintah MySQL berhubungan dengan Tanggal dan Waktu yang sering saya gunakan. Semoga bermanfaat untuk kita semua.

Comments

Popular Posts