Welcome
Welcome, thanks to look my blog
Tuesday, 23 February 2016
Monday, 22 February 2016
Perintah MySQL berhubungan dengan Tanggal dan Waktu
Perintah MySQL berhubungan dengan Tanggal dan Waktu
Penanganan tanggal dan waktu merupakan hal yang cukup penting dalam suatu software basis data, termasukMySQL. 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. Amin
Maju Terus Ilmu Pengetahuan Indonesia!
sumber : http://achmatim.net/2010/09/20/perintah-mysql-berhubungan-dengan-tanggal-dan-waktu/
Menghitung selisih tanggal menggunakan fungsi DATEDIFF
MySQL: Menghitung selisih tanggal menggunakan fungsi DATEDIFF
sumber:https://gist.github.com/hidayat365/5899638
Microsoft Windows [Version 6.1.7601] | |
Copyright (c) 2009 Microsoft Corporation. All rights reserved. | |
D:\xampp\mysql\bin>mysql -u root | |
Welcome to the MySQL monitor. Commands end with ; or \g. | |
Your MySQL connection id is 1 | |
Server version: 5.5.16 MySQL Community Server (GPL) | |
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. | |
Oracle is a registered trademark of Oracle Corporation and/or its | |
affiliates. Other names may be trademarks of their respective | |
owners. | |
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. | |
mysql> use test; | |
Database changed | |
mysql> ---------------------------------------------------------------- | |
mysql> -- create table | |
mysql> ---------------------------------------------------------------- | |
mysql> create table data_tanggal ( | |
-> id int auto_increment primary key, | |
-> tanggal date | |
-> ) ; | |
Query OK, 0 rows affected (0.17 sec) | |
mysql> ---------------------------------------------------------------- | |
mysql> -- insert data ke table tanggal | |
mysql> ---------------------------------------------------------------- | |
mysql> insert into data_tanggal (tanggal) | |
-> values ('2013-01-01'), ('2013-02-01'), ('2013-03-01'), ('2013-04-01'), ('2013-07-01'), ('2013-08-01') ; | |
Query OK, 6 rows affected (0.04 sec) | |
Records: 6 Duplicates: 0 Warnings: 0 | |
mysql> ---------------------------------------------------------------- | |
mysql> -- coba lihat hasil insert-nya | |
mysql> ---------------------------------------------------------------- | |
mysql> select * from data_tanggal ; | |
+----+------------+ | |
| id | tanggal | | |
+----+------------+ | |
| 1 | 2013-01-01 | | |
| 2 | 2013-02-01 | | |
| 3 | 2013-03-01 | | |
| 4 | 2013-04-01 | | |
| 5 | 2013-07-01 | | |
| 6 | 2013-08-01 | | |
+----+------------+ | |
6 rows in set (0.00 sec) | |
mysql> ---------------------------------------------------------------- | |
mysql> -- bandingkan tanggal hari ini dengan tanggal yang ada di dalam database | |
mysql> ---------------------------------------------------------------- | |
mysql> select id, tanggal | |
-> , current_date() as tgl_sekarang | |
-> , datediff(current_date(), tanggal) as selisih | |
-> from data_tanggal ; | |
+----+------------+--------------+---------+ | |
| id | tanggal | tgl_sekarang | selisih | | |
+----+------------+--------------+---------+ | |
| 1 | 2013-01-01 | 2013-07-01 | 181 | | |
| 2 | 2013-02-01 | 2013-07-01 | 150 | | |
| 3 | 2013-03-01 | 2013-07-01 | 122 | | |
| 4 | 2013-04-01 | 2013-07-01 | 91 | | |
| 5 | 2013-07-01 | 2013-07-01 | 0 | | |
| 6 | 2013-08-01 | 2013-07-01 | -31 | | |
+----+------------+--------------+---------+ | |
6 rows in set (0.00 sec) | |
mysql> ---------------------------------------------------------------- | |
mysql> -- sekarang dibalik, | |
mysql> -- bandingkan tanggal yang ada di dalam database dengan tanggal hari ini | |
mysql> ---------------------------------------------------------------- | |
mysql> select id, tanggal | |
-> , current_date() as tgl_sekarang | |
-> , datediff(tanggal, current_date()) as selisih | |
-> from data_tanggal ; | |
+----+------------+--------------+---------+ | |
| id | tanggal | tgl_sekarang | selisih | | |
+----+------------+--------------+---------+ | |
| 1 | 2013-01-01 | 2013-07-01 | -181 | | |
| 2 | 2013-02-01 | 2013-07-01 | -150 | | |
| 3 | 2013-03-01 | 2013-07-01 | -122 | | |
| 4 | 2013-04-01 | 2013-07-01 | -91 | | |
| 5 | 2013-07-01 | 2013-07-01 | 0 | | |
| 6 | 2013-08-01 | 2013-07-01 | 31 | | |
+----+------------+--------------+---------+ | |
6 rows in set (0.00 sec) | |
mysql> ---------------------------------------------------------------- | |
mysql> -- sekarang coba bandingkan tanggal fixed 2013-05-20 | |
mysql> -- dengan tanggal yang ada di dalam database | |
mysql> ---------------------------------------------------------------- | |
mysql> select id, tanggal | |
-> , '2013-05-20' as tgl_sekarang | |
-> , datediff('2013-5-20', tanggal) as selisih | |
-> from data_tanggal ; | |
+----+------------+--------------+---------+ | |
| id | tanggal | tgl_sekarang | selisih | | |
+----+------------+--------------+---------+ | |
| 1 | 2013-01-01 | 2013-05-20 | 139 | | |
| 2 | 2013-02-01 | 2013-05-20 | 108 | | |
| 3 | 2013-03-01 | 2013-05-20 | 80 | | |
| 4 | 2013-04-01 | 2013-05-20 | 49 | | |
| 5 | 2013-07-01 | 2013-05-20 | -42 | | |
| 6 | 2013-08-01 | 2013-05-20 | -73 | | |
+----+------------+--------------+---------+ | |
6 rows in set (0.00 sec) | |
mysql> ---------------------------------------------------------------- | |
mysql> -- sekarang dibalik, | |
mysql> -- bandingkan tanggal yang ada di dalam database | |
mysql> -- dengan tanggal fixed 2013-05-20 | |
mysql> ---------------------------------------------------------------- | |
mysql> select id, tanggal | |
-> , '2013-05-20' as tgl_sekarang | |
-> , datediff(tanggal, '2013-5-20') as selisih | |
-> from data_tanggal ; | |
+----+------------+--------------+---------+ | |
| id | tanggal | tgl_sekarang | selisih | | |
+----+------------+--------------+---------+ | |
| 1 | 2013-01-01 | 2013-05-20 | -139 | | |
| 2 | 2013-02-01 | 2013-05-20 | -108 | | |
| 3 | 2013-03-01 | 2013-05-20 | -80 | | |
| 4 | 2013-04-01 | 2013-05-20 | -49 | | |
| 5 | 2013-07-01 | 2013-05-20 | 42 | | |
| 6 | 2013-08-01 | 2013-05-20 | 73 | | |
+----+------------+--------------+---------+ | |
6 rows in set (0.00 sec) | |
mysql> ---------------------------------------------------------------- | |
mysql> -- Semangan Belajar!!! | |
mysql> ---------------------------------------------------------------- | |
mysql> |
Subscribe to:
Posts (Atom)