CREATE OR REPLACE FUNCTION "FUN_BETWEENDAYS" (start_dt date, end_dt date) return int is t_days int; begin select (trunc(end_dt - start_dt) - ((case WHEN (8 - to_number(to_char(start_dt,'D'))) > trunc(end_dt - start_dt) + 1 THEN 0 ELSE trunc((trunc(end_dt - start_dt) - (8 - to_number(to_char(start_dt,'D'))))/7) + 1 END) + (case WHEN mod(8 - to_char(start_dt, 'D'), 7) > trunc(end_dt - start_dt) - 1 THEN 0 ELSE trunc((trunc(end_dt - start_dt) - (mod(8 - to_char(start_dt,'D'),7) + 1))/7) + 1 END))) into t_days from dual; return t_days; end FUN_BETWEENDAYS