Dear All,
saya mau membuat laporan jumlah hari dari range tanggal tertentu,dimana jika 
tanggal yang di cek tersebut adalah hari sabtu/minggu/hari libur, maka tidak 
akan di hitung.
Misal Tanggal Awal 01-JAN-2010, Tanggal Akhir 05-JAN-2010, maka akan di dapat 
selisihnya adalah 2 hari.
Untuk itu saya membuat sebuah function, sehingga kita tinggal mengirimkan 
paramater tanggal awal dan tanggal akhir, dimana fungsi nanti akan 
mengembalikan tipe data NUMBER, yang merupakan selisih dari tanggal tersebut. 

create or replace
function Realisasi(awal DATE,akhir DATE)
return NUMBER
is
  nilai NUMBER;
  awal2 DATE;
  akhir2 DATE;
  awaltampung VARCHAR2(20);
  akhirtampung VARCHAR2(20);
  i NUMBER(5);
  hasil NUMBER (5);
  dd VARCHAR2(20);
  
begin

 awaltampung := to_char(awal,'dd-mm-yyyy');
 akhirtampung := to_char(akhir,'dd-mm-yyyy');
 
 awal2 := to_date(awaltampung,'dd-mm-rrrr');
 akhir2 := to_date(akhirtampung,'dd-mm-yyyy');

 nilai := round(akhir2-awal2,0);
 hasil := 0;
 awal2 :=to_date(awal2,'dd-mm-yyyy');
 
 for i in 1 .. nilai
 loop
    dd := trim(to_char(awal2,'day'));
    if dd = 'saturday' or dd = 'sunday'
    then
      hasil := hasil;
    else
      hasil := hasil+1;
    end if;
    awal2 := to_date(awal2,'dd-mm-yyyy')+1;
 end loop;
 return hasil;
end;

Saya baru bisa mem filter hari sabtu dan minggu, untuk tanggal libur, karena 
belum pasti tanggalnya, maka sementara saya berinisiatif, membuat sebuah tabel 
baru, dimana isinya adalah tanggal-tanggal libur dalam satu tahun (yang di 
inisialisasi). Akan tetapi saya juga masih belum bisa merealisasikan bagaiman 
script untuk mengecek nya.

Dan Permasalahan yang pertama, adalah : ketika saya menguji function tersebut :

select realisasi('01-JAN-2010','6-JAN-2010') as hari from dual;

Hasilnya tidak sesuai dengan ketika saya menghitung manual di kalender 2010. 
Setelah saya cari tahu, ternyata data yang di olah adalah tahun 0010, bukan 
2010. Saya tahunya , ketika saya mencoba melakukan return value berupa varchar, 
dari data yang di olah. Kenapa bisa demikan ?? Saya masih belum tahu jawabanya.

Mohon bantuan solusinya ....


      

[Non-text portions of this message have been removed]

Kirim email ke