Query Untuk Menghitung Jumlah Hari di DB2

Wah,, gak kerasa ya.. udah hampir 2 tahun blog ini nggak diupdate.. :D.

Berhubung dalam rangka memperingati hari kartini (lho lho… opo hubungane iki ?? :D, nggak ding tapi karena terinspirasi dari blog temen yang ane baca),  kali ini ane ingin ngeshare dikid pengalaman ane bersama Basisdata DB2.

Topik ini ane angkat karena ada pengalaman sedikit dalam menggunakan database ini yang menurut ane cukup penting, sederhana, namun beresiko tinggi kalo salah menggunakannya, terutama buat yang baru terjun serius ke dunia pemrograman seperti ane ini. (hmm… cukup menakutkan,,, eng..ing eng,,, #PakeBacksoundSerem)

Topik apa itu ? (eittss…, ada yang mulai serius nih,,, 😀 )

Sederhana, cuma menghitung jumlah hari menggunakan Query di DB2. gampang kan ? ya jelas gampang cuma menghitung hari thok.

ok ane yakin, semuanya pasti udah tau caranya.

Contoh Kasus 1 : Berapa jumlah hari dari tanggal 1 April 2012 – 10 Mei 2012 ? secara matematisnya bisa dihitung jawabannya ada 40 hari (1 bulan penuh di bulan April (30) + 10 hari di bulan Mei  = 40 hari). Tapi bagaimana dengan perhitungan di DB2 ? mari kita coba.

query nya sederhana sekali :

1. Menggunakan TIMESTAMPDIFF

select TIMESTAMPDIFF(16,CHAR(TIMESTAMP('2012-05-10-23.59.59.000000') - TIMESTAMP('2012-04-01-00.00.00.000000')))+1 as JUMLAH_HARI
from SYSIBM.SYSDUMMY1

2. Menggunakan DAYS

SELECT
CAST (DAYS('2012-05-10 00:00:00') - DAYS('2012-04-01 00:00:00')+1 AS INTEGER) as JUMLAH_HARI
FROM SYSIBM.SYSDUMMY1

Simple kan ? bagaimana hasilnya ? sama… (ya emang sama,,, 😀 ). ok mari kita uji lagi.

Contoh Kasus 2 : Berapa jumlah hari dari tanggal 28 januari 2012 – 28 Februari 2012 ?

Secara matematis jawabannya ada 32 hari. Trus bagaimana dengan hasil query diatas ?

ternyata oh ternyata…… Query cara 1  menghasilkan 31 hari, sedangkan query 2 menghasilkan 32  hari. Lho koq bisa gt ?? Tenang dulu bray.. point inilah yang ingin ane tunjukkan sebenarnya,,, 😀

Ok.. menurut sumber yang ane  baca (http://www.ibm.com/developerworks/data/library/techarticle/0211yip/0211yip3.html), ternyata fungsi TIMESTAMPDIFF di DB 2 menghasilkan nilai perkiraan berdasarkan asumsi bahwa 1 bulan ada 30 hari sehingga hasil perhitungan kasus 2 diatas menjadi kurang akurat. Nah gitu tuh bray alasannya… 😀

coba bayangkan klo salah query di modul keuangan,, bisa kacau kan ? :D.

Tapi pada kenyataannya inilah yang ane temui waktu melakukan debug di program yang ane kerjakan sekarang, dan berhubung developer2nya udah pada lulus makanya catatan ini ane tulis agar menjadi pelajaran buat saya dan bagi yang membacanya.

ok bray gitu aja dulu sharing dari saya, semoga bermanfaat dan Terima Kasih sudah membaca tulisan gak jelas ini… hahaha… 😀

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

w

Connecting to %s