Dec 22, 2009

Date Calculations Mysql [ Perhitungan Tanggal ]

Calculations Date

Kadang jika kita mebutuhkan operasi yang berhubungan dengan Tahun-Bulan-Tanggal pada suatu aplikasi database. Kita biasannya menghitung operasi tersebut darai sisi program aplikasi, namau di mysql perhitungan tanggal (calculation date) telah disediakan dengan performance yang mumpuni. Sebagai contoh,kita bisa mengetahui suatu tahun dengan fungsi yang sederhana


Berikut adalah fungsi-fungsi dasar DATE pada mysql
mysql> SELECT NOW();

+---------------------+
| NOW()               |
+---------------------+
| 2009-23-31 00:32:21 |
+---------------------+

atau jika hanya ingin mendapatkan tanggalnya saja
mysql> SELECT CURRENT_DATE();

+----------------+
| CURRENT_DATE() |
+----------------+
| 2009-12-31 |
+----------------+

Mysql juga telah menyediakan fungsi-fungsi interva seperti MONTH(), DAYOFMONTH(), HOUR(), MINUTE() dan SECOND().
mysql> SELECT MONTH(NOW()) AS m,
DAYOFMONTH(NOW()) AS d,
HOUR(NOW()) AS h,
MINUTE(NOW()) AS m,
SECOND(NOW()) AS s;

+------+------+------+------+------+
| m | d | h | m | s |
+------+------+------+------+------+
| 12 | 31 | 1 | 53 | 38 |
+------+------+------+------+------+
mysql> SELECT YEAR('2009-12-31');

+--------------------+
| YEAR('2009-12-31') |
+--------------------+
| 2009               |
+--------------------+


Atau kita juga bisa melakukan penambahan maupun pengurangan dari tahun menggunakan operator (+) (-)

mysql> SELECT YEAR('2009-12-31')+5;

+----------------------+
| YEAR('2009-12-31')+5 |
+----------------------+
| 2014                 |
+----------------------+

mysql> SELECT YEAR('2003-03-31')-5;

+----------------------+
| YEAR('2009-12-31')-5 |
+----------------------+
| 2004                 |
+----------------------+


DAYOFMONTH() adalah fungsi yang memberikan nilai ke n hari pada bulan xxx antara 1 -31
mysql> SELECT DAYOFMONTH(CURRENT_DATE());

+----------------------------+
| DAYOFMONTH(CURRENT_DATE()) |
+----------------------------+
|                         23 |
+----------------------------+

Saya mengeksekusi script diatas tanggal 23 Desember 2009

DAYNAME() adalah fungsi yang memberikan nilai balik berupa hari 1 untuk minggu (sunday) dan 7 untuk sabtu(saturday), Dan DAYOFYEAR() meberikan hari ke n pada tahun xxx. berikut adalah penggunaannya:
mysql> SELECT DAYNAME(CURRENT_DATE()); //Saya mengeksekusi script tanggal 23 Desember 2009

+-------------------------+
| DAYNAME(CURRENT_DATE()) |
+-------------------------+
| Wednesday               |
+-------------------------+
1 row in set (0.00 sec)

mysql> SELECT DAYOFWEEK(CURRENT_DATE());

+---------------------------+
| DAYOFWEEK(CURRENT_DATE()) |
+---------------------------+
|                         4 |
+---------------------------+
1 row in set (0.00 sec)

mysql> SELECT DAYOFYEAR(CURRENT_DATE());

+---------------------------+
| DAYOFYEAR(CURRENT_DATE()) |
+---------------------------+
|                       357 |
+---------------------------+
1 row in set (0.00 sec)


Cukup jelaskah, perbedaannya??

Ok,operasi perhitungan yang palng sering kita lakukan adalah mencari umur. Sayangnya tida ada fungsi yang instant untuk mengetahui umur hanya dari tanggal lahirnya. Maka yang dibutuhkan adalah sedikit tambahan berfikir banagimana menggabungkan beberaoa fungsi yang kita pelajari diatas. Misal tanggal lahir saya adalah 1983-10-28, untuk mengetahui umur ternyata cukup mudah
mysql> SELECT YEAR(CURRENT_DATE)-YEAR('1983-10-28');

+---------------------------------------+
| YEAR(CURRENT_DATE)-YEAR('1983-10-28') |
+---------------------------------------+
|                                    26 |
+---------------------------------------+
1 row in set (0.00 sec)


Udahan dulu capek,bosss!!

3 comments:

Kelvin Tan said...

Nice. Refresher on sql. :)

tito said...

kamsiyah, arigato

mas doyok said...

oke mas bermanfaat
belajar banyak nih