Senin, 13 Februari 2017

Perhitungan Tanggal pada Database, dengan Menggunakan 2 Type Data

MySQL menyediakan beberapa fungsi yang berhubungan dengan tanggal, fungsi ini digunakan untuk menghitung umur, bahkan untuk mengambil sebagian dari bagian tanggal, seperti bulan, tahun lahir, bulan lahir.


01. Type data yang digunakan
  • Integer : Tipe data integer adalah tipe data yang terdiri dari angka bulat (tidak mengandung nilai pecahan atau nilai desimal). Nilai ini bisa berbentuk angka positif maupun negatif, contohnya 1, 2, 6, -44, 20000, atau 128730123
  • Date() : adalah tipe data yang dapat digunakan untuk menampung data yang bertipe tanggal, bulan, dan tahun.    
02. Mana yang lebih mudah digunakan
Berikut sebuah tabel database yang akan diolah (tabel : peliharaan): 
Nama 
(Varchar)
LahirDate 
(Date)
LahirInt 
(Int)
Kucing
1993-01-29
728240400
Anjing
1998-07-24
901213200
Merpati
2000-02-13
950374800
Ayam
1999-09-28
938451600
Bebek
1999-09-09
936810000

Untuk mengetahui berapa tahun umur binatang, maka harus mencari selisih antara tanggal saat ini dengan tanggal lahir sebagai berikut :
  • Kasus 1 untuk menghitung tanggal dengan menggunakan type data integer maka fungsi yang digunakan adalah:
    $resultdb=mysql_query('SELECT Nama, LahirDate FROM peliharaan');
    while ($rowdb = mysql_fetch_assoc($resultdb)) {
    $kelahiran=date('yyyy-mm-dd',$rowdb['LahirInt']);
    $result=mysql_query('SELECT nama, kelahiran, CURDATE(), (YEAR(CURDATE())-YEAR($kelahiran))- RIGHT(CURDATE(),5) < RIGHT($kelahiran,5)) AS umur FROM peliharaan');  
    while ($row = mysql_fetch_assoc($result)) {   
    echo $row['nama'];   echo $row['kelahiran'];   
    echo CURDATE();   
    echo $row['umur'];  
    }   
    } 
  • Kasus 2 menghitung umur dengan menggunakan type data date() maka fungsi yang digunakan adalah :

    $result=mysql_query('SELECT Nama, LahirDate, CURDATE(), (YEAR(CURDATE())-YEAR(kelahiran))- RIGHT(CURDATE(),5) < RIGHT(kelahiran,5)) AS umur FROM peliharaan'); 
    while ($row = mysql_fetch_assoc($result)) {     
    echo $row['nama'];     echo $row['LahirDate'];     
    echo CURDATE();     
    echo $row['umur']; }


Disini, YEAR() berarti mengambil nilai tahun dari tanggal, dan RIGHT() mengambil sejumlah 5 karakter dimulai dari kanan yang merupakan bagian dari tanggal (MM-DD-YYYY). Dan (RIGHT(CURDATE(),5) < RIGHT(kelahiran,5)) maka akan menghasilkan nilai 0 atau 1.
sedangkan AS umur merupakan field baru untuk menampung hasil dari pengurangan selisih tanggal sekarang dan tanggal lahir. CURDATE() merupakan fungsi untuk menghasilkan tanggal hari ini, berbeda dengan kasus 1, dimana untuk melakukan pengurangan selisih, kita harus melakukan deklarasi variabel terlebih dahulu yaitu fungsi DATE().

Dari fungsi diatas dapat dilihat menghasilkan nilai dan tampilan yang sama dengan 2 cara yang berbeda, dari hal ini dapat ditentukan kode PHP mana yang lebih mudah digunakan. Baik type Date & Intger diatas, sama - sama memiliki keunikan masing - masing tergantung penggunaan serta ketergantungan pada field lain dalam Database.

Yang lebih simpel dan sederhana seharusnya menggunakan perintah PHP pada kasus 2.