Cara menggunakan selisih tanggal mysql

Images

MySQL : Tutorial Menghitung selisih tanggal menggunakan fungsi DATEDIFF

Berikut ini akan saya share mengenai menghitung selisi tanggal menggunakan fungsi yang sudah terdapat di sintax SQL, biasanya para programmer membuat logika sendiri dibahasa pemograman yang mereka kuasai untuk menghitung selisi antara dua tanggal, jika mereka menggunkan RDBMS SQL padahal selisih tanggal sudah di sediakan di SQL, okey tanpa basa basi lagi mari kita coba :)

1. Buat terlebih dahulu tabel di database yang kita gunakan untuk menghitung selisih tanggal

mysql> create table data_tanggal (
    ->   id int auto_increment primary key,
    ->   tanggal date
    -> ) ;

2. Masukan data-data yang kita gunakan untuk mengitung selisih di table tersebut.

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') ;

3. Nah sekarang kita tampilkan isi table
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)

4. untuk menggukan fungsi menghitung selisih di SQL gunakan DateDiff contohnya :

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)

currentdate kita gunakan untuk menggambil tanggal sekarang, dan sintax datediff(current_date(), tanggal) maksudnya datediff(tanggalsekarang,tanggaldestinasi) menghitung selisih dari tanggal sekarang ke tanggaldestinasi.

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...