1. Buat terlebih dahulu tabel di database yang kita gunakan untuk menghitung selisih tanggal
mysql> create table data_tanggal (2. Masukan data-data yang kita gunakan untuk mengitung selisih di table tersebut.
-> id int auto_increment primary key,
-> tanggal date
-> ) ;
mysql> insert into data_tanggal (tanggal)3. Nah sekarang kita tampilkan isi table
-> values ('2013-01-01'), ('2013-02-01'), ('2013-03-01'), ('2013-04-01'), ('2013-07-01'), ('2013-08-01') ;
mysql> select * from data_tanggal ;
+----+------------+4. untuk menggukan fungsi menghitung selisih di SQL gunakan DateDiff contohnya :
| 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> select id, tanggalcurrentdate kita gunakan untuk menggambil tanggal sekarang, dan sintax datediff(current_date(), tanggal) maksudnya datediff(tanggalsekarang,tanggaldestinasi) menghitung selisih dari tanggal sekarang ke tanggaldestinasi.
-> , 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)
5. Sekarang kita balik, bandingkan tanggal yang ada di dalam database dengan tanggal hari ini
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)
6, sekarang kita coba jika tanggal sekarangnya kita ubah sesuai kita inginkan misalnya tanggal 2013-5-20
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)
7, sekarang kita balik tanggaldestinasinya yang kita ubah sesuai kita inginkan 2013-05-20
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)
Sekian tutorial dari saya, semoga apa yang saya bagikan dapat dimengerti ^_^ dan jadi ilmu yang bermanfaat untuk teman-teman Programmer. Salam...