CREATE OR REPLACE package SMERP2122.date_of as
function calendar_first_date(p_mod varchar2 , p_cal varchar2) return date;
function calendar_last_date(p_mod varchar2 , p_cal varchar2) return date;
function first_date_monthno(p_month number, p_year number) return date;
function last_date_monthno(p_month number, p_year number) return date;
function system_first_date return date;
function system_last_date return date;
function system_current_dayno return number;
function system_last_dayno return number;
function txn return date; --- Transaction Date
function txndate(p_date date) return date; --- Transaction Date
function month_first_date(p_date date) return date;
function month_last_date(p_date date) return date;
function month_last_dayno(p_date date) return number;
function previous_month_first_date(p_date DATE) RETURN DATE;
function previous_month_last_date(p_date DATE) RETURN DATE;
function allowed_first_date(p_date date ) return date;
function allowed_last_date ( p_date date )return date;
function current_date_no (p_date date) return number;
function day_no_into_name (p_no number) return varchar2;
function name_into_day_no (p_name varchar2) return number;
function nextday_is_rest (p_date date, eid number) return boolean;
function backday_is_rest (p_date date, eid number) return boolean;
function today_is_rest (p_date date, eid number) return boolean;
procedure rest_add (p_date date, eid number) ;
procedure rest_del (p_date date, eid number) ;
function next_restday_no (p_date date) return number;
function back_restday_no (p_date date) return number;
function check_rest_allocated (p_date date, eid number) return boolean;
function present_dz(p_from date , p_too date , p_shift varchar2, p_org number, p_unit number, p_deptt number , p_sec number) return varchar2 ;
function present_cost(p_from date , p_too date , p_shift varchar2, p_org number, p_unit number, p_deptt number , p_sec number) return number ;
function made_date(p_dd varchar2, p_hh number, p_mi number , p_ss number, p_am varchar2) return date;
function date_making(p_dd varchar2, p_hh number, p_mi number , p_ss number, p_am varchar2) return date;
function fy(p_date date) return varchar2;
function fy(p_date date, p_mod varchar2 := 'ACCOUNTS', p_cal varchar2) return varchar2;
function Sfy(p_date date, p_mod varchar2 := 'ACCOUNTS', p_cal varchar2) return varchar2;
function Sfy_from_fy(P_fy varchar2) return varchar2;
function made_first_date(p_month number , p_year number) return date;
function made_last_date(p_month number , p_year number) return date;
function period_status(p_date date ) return boolean;
function month_days(p_date date ) return number;
function month_name(p_month varchar2 ) return varchar2 ;
function month_full_name(p_date date ) return varchar2 ;
function previous_month( p_month number , p_year number ) return number;
function previous_year( p_month number , p_year number ) return number;
function previous_year_date( p_date date) return date;
function is_sunday( p_date date) return varchar2;
function get_dispatch_date(p_day number, p_date date) return varchar2;
function is_period_close(p_date date, p_unit number ) return varchar2;
function get_pkg_po_first_date(p_date date, p_unit number ) return date;
--
function doc_Date_greater( table_name varchar2 , doc_col varchar2 , table_doc varchar2 , table_col varchar2 , from_Date date ) return varchar2;
function working_days( p_from date , p_too date ) return number;
function month_remain_days return number;
function month_days_passed return number;
function get_days(p_from date , p_too date ) return number;
function get_month_remain_days(p_too date ) return number;
end;
/
function calendar_first_date(p_mod varchar2 , p_cal varchar2) return date;
function calendar_last_date(p_mod varchar2 , p_cal varchar2) return date;
function first_date_monthno(p_month number, p_year number) return date;
function last_date_monthno(p_month number, p_year number) return date;
function system_first_date return date;
function system_last_date return date;
function system_current_dayno return number;
function system_last_dayno return number;
function txn return date; --- Transaction Date
function txndate(p_date date) return date; --- Transaction Date
function month_first_date(p_date date) return date;
function month_last_date(p_date date) return date;
function month_last_dayno(p_date date) return number;
function previous_month_first_date(p_date DATE) RETURN DATE;
function previous_month_last_date(p_date DATE) RETURN DATE;
function allowed_first_date(p_date date ) return date;
function allowed_last_date ( p_date date )return date;
function current_date_no (p_date date) return number;
function day_no_into_name (p_no number) return varchar2;
function name_into_day_no (p_name varchar2) return number;
function nextday_is_rest (p_date date, eid number) return boolean;
function backday_is_rest (p_date date, eid number) return boolean;
function today_is_rest (p_date date, eid number) return boolean;
procedure rest_add (p_date date, eid number) ;
procedure rest_del (p_date date, eid number) ;
function next_restday_no (p_date date) return number;
function back_restday_no (p_date date) return number;
function check_rest_allocated (p_date date, eid number) return boolean;
function present_dz(p_from date , p_too date , p_shift varchar2, p_org number, p_unit number, p_deptt number , p_sec number) return varchar2 ;
function present_cost(p_from date , p_too date , p_shift varchar2, p_org number, p_unit number, p_deptt number , p_sec number) return number ;
function made_date(p_dd varchar2, p_hh number, p_mi number , p_ss number, p_am varchar2) return date;
function date_making(p_dd varchar2, p_hh number, p_mi number , p_ss number, p_am varchar2) return date;
function fy(p_date date) return varchar2;
function fy(p_date date, p_mod varchar2 := 'ACCOUNTS', p_cal varchar2) return varchar2;
function Sfy(p_date date, p_mod varchar2 := 'ACCOUNTS', p_cal varchar2) return varchar2;
function Sfy_from_fy(P_fy varchar2) return varchar2;
function made_first_date(p_month number , p_year number) return date;
function made_last_date(p_month number , p_year number) return date;
function period_status(p_date date ) return boolean;
function month_days(p_date date ) return number;
function month_name(p_month varchar2 ) return varchar2 ;
function month_full_name(p_date date ) return varchar2 ;
function previous_month( p_month number , p_year number ) return number;
function previous_year( p_month number , p_year number ) return number;
function previous_year_date( p_date date) return date;
function is_sunday( p_date date) return varchar2;
function get_dispatch_date(p_day number, p_date date) return varchar2;
function is_period_close(p_date date, p_unit number ) return varchar2;
function get_pkg_po_first_date(p_date date, p_unit number ) return date;
--
function doc_Date_greater( table_name varchar2 , doc_col varchar2 , table_doc varchar2 , table_col varchar2 , from_Date date ) return varchar2;
function working_days( p_from date , p_too date ) return number;
function month_remain_days return number;
function month_days_passed return number;
function get_days(p_from date , p_too date ) return number;
function get_month_remain_days(p_too date ) return number;
end;
/
/***************************************************************************************************************/
CREATE OR REPLACE package body SMERP2122.date_of as
function calendar_first_date(p_mod varchar2 , p_cal varchar2) return date as
cnt number;
retval date;
begin
select count(*) into cnt from SMF_PERIODS a where a.MODULE = p_mod and FY_NAME = p_cal;
if nvl(cnt,0) <> 0 then
select min(start_date) into retval from SMF_PERIODS a where a.MODULE = p_mod and FY_NAME = p_cal and rownum =1 ;
else
retval := trunc(sysdate);
end if;
return retval;
end;
function calendar_last_date(p_mod varchar2 , p_cal varchar2) return date as
cnt number;
retval date;
begin
select count(*) into cnt from SMF_PERIODS a where a.MODULE = p_mod and FY_NAME = p_cal;
if nvl(cnt,0) <> 0 then
select max(end_date) into retval from SMF_PERIODS a where a.MODULE = p_mod and FY_NAME = p_cal ;
else
retval := trunc(sysdate);
end if;
return retval;
end;
function first_date_monthno(p_month number, p_year number) return date as
retval date;
begin
select to_date('01/'||p_month||'/'||p_year,'DD-MM-RRRR')
into retval from dual;
return retval;
end;
function last_date_monthno(p_month number, p_year number) return date as
retval date;
begin
select last_day(to_date('01/'||p_month||'/'||p_year,'DD-MM-RRRR'))
into retval from dual;
return retval;
end;
function system_first_date return date as
begin
return trunc(sysdate,'MM');
end;
function system_last_date return date as
begin
return last_day(sysdate);
end;
function system_current_dayno return number as
begin
return to_char(sysdate,'DD');
end;
function system_last_dayno return number as
begin
return to_char(last_day(sysdate),'DD');
end;
function txn return date as
retval date := trunc(sysdate);
begin
if to_number(to_char(sysdate,'HH24MI')) between 00 and 0400 then
retval := trunc(sysdate) -1 ;
end if;
return retval;
end;
function txndate(p_date date) return date as --- Transaction Date
retval date := p_date;
begin
if to_number(to_char(p_date,'HH24MI')) between 00 and 0400 then
retval := trunc(p_date) -1 ;
end if;
return retval;
end;
function month_first_date(p_date date) return date as
begin
return trunc(p_date,'MM');
end;
function month_last_date(p_date date) return date as
begin
return last_day(p_date);
end;
function month_last_dayno(p_date date) return number as
begin
return to_char(last_day(p_date),'DD');
end;
FUNCTION previous_month_first_date(p_date DATE) RETURN DATE as
retval date;
begin
select trunc(trunc(p_date,'MM')-1,'MM') into retval from dual;
return retval;
end;
FUNCTION previous_month_last_date(p_date date) RETURN DATE as
retval date;
begin
select trunc(p_date,'MM')-1 into retval from dual;
return retval;
end;
function allowed_first_date(p_date date ) return date as
begin
return trunc(sysdate,'MM');
end;
function allowed_last_date ( p_date date )return date
as
begin
return last_day(sysdate);
end;
---
function current_date_no (p_date date) return number as
retval number;
cnt number;
begin
select count(*) into cnt from smf_lookups l where l.lookup_type ='WEEK_DAY' and upper(trim(l.lookup_code)) = trim(to_char(p_date,'DAY'));
if nvl(cnt,0) > 0 then
select lookup_value into retval from smf_lookups l where l.lookup_type ='WEEK_DAY' and upper(trim(l.lookup_code)) = trim(to_char(p_date,'DAY'));
else
retval := 5;
end if;
return retval;
end;
function day_no_into_name (p_no number) return varchar2 as
retval varchar2(20);
cnt number;
begin
select count(*) into cnt from smf_lookups l where l.lookup_type ='WEEK_DAY' and l.lookup_value = p_no;
if nvl(cnt,0) > 0 then
select lookup_code into retval from smf_lookups l where l.lookup_type ='WEEK_DAY' and l.lookup_value = p_no;
else
retval := 'FRIDAY';
end if;
return retval;
end;
function name_into_day_no (p_name varchar2) return number as
retval number;
cnt number;
begin
select count(*) into cnt from smf_lookups l where l.lookup_type ='WEEK_DAY' and upper(l.lookup_code) = upper(p_name);
if nvl(cnt,0) > 0 then
select lookup_value into retval from smf_lookups l where l.lookup_type ='WEEK_DAY' and upper(l.lookup_code) = upper(p_name);
else
retval := 5;
end if;
return retval;
end;
function nextday_is_rest (p_date date, eid number) return boolean as
retval boolean := false;
dayno number;
restday number;
cnt number;
begin
dayno := current_date_no(p_date);
/*
-- select count(*) into cnt from v_employees_master v where v.old_bar_code = eid;
select count(*) into cnt from v_employees_master v where v.employee_id = eid;
if nvl(cnt,0) <> 0 then
-- select v.REST_DAY into restday from v_employees_master v where v.old_bar_code = eid;
select v.REST_DAY into restday from v_employees_master v where v.employee_id = eid;
else
raise_application_error(-20000,'Rest Day is not Defined....');
end if;
if dayno+1 = 8 then
dayno := 0;
end if;
if dayno+1 = restday then
retval := true;
end if;
*/
return retval;
end;
function backday_is_rest (p_date date, eid number) return boolean as
retval boolean := false;
dayno number;
restday number;
cnt number;
begin
dayno := current_date_no(p_date);
--select count(*) into cnt from v_employees_master v where v.old_bar_code = eid;
/* select count(*) into cnt from v_employees_master v where v.employee_id = eid;
if nvl(cnt,0) <> 0 then
--select v.REST_DAY into restday from v_employees_master v where v.old_bar_code = eid;
select v.REST_DAY into restday from v_employees_master v where v.employee_id = eid;
else
raise_application_error(-20000,'Rest Day is not Defined....');
end if;
if dayno-1 = 0 then
dayno := 8;
end if;
if dayno-1 = restday then
retval := true;
end if; */
return retval;
end;
function today_is_rest (p_date date, eid number) return boolean as
retval boolean := false;
dayno number;
restday number;
cnt number;
begin
dayno := current_date_no(p_date);
--select count(*) into cnt from v_employees_master v where v.old_bar_code = eid;
/* select count(*) into cnt from v_employees_master v where v.employee_id = eid;
if nvl(cnt,0) <> 0 then
--select v.REST_DAY into restday from v_employees_master v where v.old_bar_code = eid;
select v.REST_DAY into restday from v_employees_master v where v.employee_id = eid;
else
raise_application_error(-20000,'Rest Day is not Defined....');
end if;
if dayno = restday then
retval := true;
end if;
*/
return retval;
end;
procedure rest_add (p_date date, eid number) as
cnt number;
peid number;
wk number;
begin
--select employee_id into peid from per_employees where old_bar_code = eid;
peid := eid;
/* select count(*) into cnt from per_rest where EMPLOYEE_ID = peid and REST_DATE = trunc(p_date);
if nvl(cnt,0) = 0 then
select count(*) into wk from PER_ATTANANCE_SUMMARY where cdate = trunc(p_date) and EMPLOYEE_ID = peid;
if nvl(wk,0) = 0 then
insert into per_rest(EMPLOYEE_ID, REST_DATE, SOURCE, CREATEDDATE, CREATE_MACHINE, POSTED)
values(peid,trunc(p_date),'A',sysdate,get_machine_name,'Y');
end if;
end if;*/
end;
procedure rest_del (p_date date, eid number) as
cnt number;
peid number;
begin
--select employee_id into peid from per_employees where old_bar_code = eid;
peid := eid;
/* select count(*) into cnt from per_rest where EMPLOYEE_ID = peid and REST_DATE = trunc(p_date);
if nvl(cnt,0) <> 0 then
delete from per_rest where EMPLOYEE_ID = peid and REST_DATE = trunc(p_date);
end if;
*/
end;
function next_restday_no (p_date date) return number as
retval number;
begin
select current_date_no(p_date) into retval from dual;
if retval + 1 = 8 then
retval := 1;
end if;
return retval;
end;
function back_restday_no (p_date date) return number as
retval number;
begin
select current_date_no(p_date) into retval from dual;
if retval - 1 = 0 then
retval := 7;
end if;
return retval;
end;
function check_rest_allocated (p_date date, eid number) return boolean as
retval boolean := false;
cnt number;
peid number;
begin
--select employee_id into peid from per_employees where old_bar_code = eid;
peid := eid;
/*
select count(*) into cnt from per_rest where employee_id = peid and rest_date = trunc(p_date);
if nvl(cnt,0) <> 0 then
retval := true;
end if;
*/
return retval;
end;
function present_dz(p_from date , p_too date , p_shift varchar2, p_org number, p_unit number, p_deptt number , p_sec number) return varchar2 as
retval varchar2(2000) := '';
begin
/*
for i in (
select decode(designation_name,null,'Un-Defined',designation_name)||'= ' || count(*) dz
from
(
select v.EMPLOYEE_ID , v.DESIGNATION_CODE, initcap(v.designation_name) designation_name from v_employees_master v
where v.organization_id = decode(p_org,null,v.organization_id,p_org)
and v.unit_id = decode(p_unit,null,v.unit_id,p_unit)
and nvl(DEPTT_CODE,'0') = decode(P_deptt,null,nvl(DEPTT_CODE,'0'),P_deptt)
and nvl(SEC_ID,'0') = decode(P_sec, null, nvl(SEC_ID,'0') , p_sec)
) v
, ( select * from PER_ATTANANCE_SUMMARY
where cdate between p_from and p_too
and nvl(shift,'M') = decode(P_SHIFT, null , nvl(shift,'M') , P_SHIFT)
) a
where v.EMPLOYEE_ID = a.EMPLOYEE_ID
group by designation_name
)
loop
retval := retval ||' , '||i.dz;
end loop;*/
return retval;
end;
function present_cost(p_from date , p_too date , p_shift varchar2, p_org number, p_unit number, p_deptt number , p_sec number) return number as
retval number;
begin
/*
select sum(salary_per_day) into retval
from
(
select v.EMPLOYEE_ID ,(GROSS_SALARY/date_of.system_last_dayno) salary_per_day
from v_employees_master v
where v.organization_id = decode(p_org,null,v.organization_id,p_org)
and v.unit_id = decode(p_unit,null,v.unit_id,p_unit)
and nvl(DEPTT_CODE,'0') = decode(P_deptt,null,nvl(DEPTT_CODE,'0'),P_deptt)
and nvl(SEC_ID,'0') = decode(P_sec, null, nvl(SEC_ID,'0') , p_sec)
) v
, ( select * from PER_ATTANANCE_SUMMARY
where cdate between p_from and p_too
and nvl(shift,'M') = decode(P_SHIFT, null , nvl(shift,'M') , P_SHIFT)
) a
where v.EMPLOYEE_ID = a.EMPLOYEE_ID ;
*/
return retval;
end;
function made_date(p_dd varchar2, p_hh number, p_mi number , p_ss number, p_am varchar2) return date as
retval date;
strr varchar2(25);
begin
strr := p_dd||' '||p_hh||':'||p_mi||':'||lpad(p_ss,2,'0') ;
dbms_output.put_line(strr);
select to_date(strr,'DD-MON-RRRR HH24:MI:SS')
into retval from dual;
return retval;
end;
function date_making(p_dd varchar2, p_hh number, p_mi number , p_ss number, p_am varchar2) return date as
retval date;
strr varchar2(25);
begin
strr := p_dd||' '||p_hh||':'||p_mi||':'||lpad(p_ss,2,'0') || ' ' || p_am ;
dbms_output.put_line(strr);
select to_date(strr,'DD-MON-RRRR HH:MI:SS AM')
into retval from dual;
return retval;
end;
function fy(p_date date) return varchar2 as
retval varchar2(20);
begin
select c.DOC_YEAR into retval from calendar c where cdate = trunc(p_date);
--if retval = '2022-21-1' then
-- retval := '2022-23-1' ;
-- end if;
return retval;
end;
function fy(p_date date, p_mod varchar2 := 'ACCOUNTS', p_cal varchar2) return varchar2 as
retval varchar2(20);
cnt number;
begin
select FY_NAME into retval from SMF_PERIODS c where MODULE = p_mod
and CALENDAR_NAME = p_cal
and trunc(p_date) between START_DATE and END_DATE and unit_id = 1 and rownum = 1; --and STATUS ='O';
return retval;
end;
function Sfy(p_date date, p_mod varchar2 := 'ACCOUNTS', p_cal varchar2) return varchar2 AS
retval varchar2(20);
cnt number;
begin
select SHORT_FY_NAME into retval from SMF_PERIODS c where MODULE = p_mod
and CALENDAR_NAME = p_cal
and TRUNC(p_date) between START_DATE and END_DATE and rownum = 1; --and STATUS ='O';
return retval;
end;
function Sfy_from_fy(P_fy varchar2) return varchar2 as
retval varchar2(20);
cnt number;
begin
select SHORT_FY_NAME into retval from (
select distinct SHORT_FY_NAME from SMF_PERIODS where fy_name = P_fy)
where rownum = 1
;
return retval;
end;
function made_first_date(p_month number , p_year number) return date as
retval date;
begin
select to_date('01'||'-'||p_month||'-'||p_year,'DD-MM-RRRR ')
into retval from dual;
return retval;
end;
function made_last_date(p_month number , p_year number) return date as
retval date;
begin
select to_date('01'||'-'||p_month||'-'||p_year,'DD-MM-RRRR ')
into retval from dual;
select last_day(retval) into retval from dual;
return retval;
end;
function period_status(p_date date ) return boolean as
retval boolean;
cnt number;
begin
select count(*) into cnt from smf_periods where STATUS='O' and
TRUNC(p_date) between START_DATE and END_DATE;
if nvl(cnt,0) = 0 then
retval := false;
else
retval := true;
end if;
return retval;
end ;
function month_days(p_date date ) return number as
retval varchar2(20);
begin
select to_char(last_day(sysdate),'dd') into retval from dual ;
return retval;
end;
function month_name(p_month varchar2 ) return varchar2 AS
retval varchar2(200);
begin
select LOOKUP_VALUE into retval from SMF_LOOKUPS WHERE LOOKUP_TYPE = 'MONTH_NAME' AND LOOKUP_CODE = p_month;
return retval;
end;
function month_full_name(p_date date ) return varchar2 AS
retval varchar2(200);
begin
select upper(to_char(to_date(p_date, 'dd-mon-yyyy'),'month')) into retval from dual;
return retval;
end;
function previous_month( p_month number , p_year number ) return number as
retval number;
begin
retval := p_month -1 ;
if retval <= 0 then
retval:= 12;
end if;
return retval;
end ;
function previous_year( p_month number , p_year number ) return number as
retval number;
begin
retval := p_month -1 ;
if retval <= 0 then
retval:= p_year -1;
else
retval:= p_year;
end if;
return retval;
end ;
function previous_year_date( p_date date) return date as
retval date;
begin
SELECT add_months(p_date, -12) into retval FROM DUAL;
return retval;
end;
function is_sunday( p_date date) return varchar2 as
dd varchar2(10);
retval varchar2(10) := 'NO';
begin
SELECT TRIM(to_char(p_date,'DAY')) into dd FROM DUAL;
if dd = 'SUNDAY' then
retval :='YES';
end if;
return retval;
end;
function get_dispatch_date(p_day number, p_date date) return varchar2 as
retval varchar2(10);
p_calc number;
p_monthdays number;
newdat date ;
strr varchar2(200);
dated date;
begin
if nvl(p_day,0) between 1 and 31 then
dated := p_date;
p_calc := p_day +2 ;
p_monthdays := month_days(dated);
if p_calc > p_monthdays then
retval := ( p_calc -p_monthdays ) + 1;
dated := add_months(p_date,1);
else
retval := p_calc;
end if;
strr := to_char(lpad(retval,2,'0'))||'-'||to_char(dated,'MM')||'-'||to_char(p_date,'RRRR');
newdat := to_date(strr,'DD-MM-RRRR');
if is_sunday(newdat) ='YES' then
newdat := newdat + 1;
end if;
retval := to_char(newdat,'DD-MM-RR');
end if;
return retval;
end;
function is_period_close(p_date date, p_unit number ) return varchar2 as
cnt number;
retval varchar2(20);
begin
select count(*) into cnt from smf_periods where unit_id = p_unit and p_date between start_date and end_date;
if nvl(cnt,0) = 0 then
select count(*) into cnt from smf_periods where p_date between start_date and end_date and unit_id = 1;
if nvl(cnt,0) <> 0 then
select status into retval from smf_periods where p_date between start_date and end_date and unit_id = 1;
end if;
else
select status into retval from smf_periods where p_date between start_date and end_date and unit_id = p_unit;
end if;
return retval;
end;
function get_pkg_po_first_date(p_date date, p_unit number ) return date as
retval date;
cnt number;
begin
if p_unit = 19 then
if to_number(to_char(p_date,'DD')) > 21 then
retval := month_first_date(p_date) + 21;
else
retval := month_first_date(month_first_date(p_date) - 1)+21 ;
end if;
else
if to_number(to_char(p_date,'DD')) > 24 then
retval := month_first_date(p_date) + 24;
else
retval := month_first_date(month_first_date(p_date) - 1)+24 ;
end if;
end if;
return retval;
end;
function doc_Date_greater( table_name varchar2 , doc_col varchar2 , table_doc varchar2 , table_col varchar2 , from_Date date ) return varchar2 as
strr varchar2(2000);
cnt number;
retval varchar2(20) := 'NO';
dt date;
begin
strr := ' select '|| table_col || ' from ' || table_name || ' where ' || doc_col || ' = ''' ||table_doc ||'''';
--dbms_output.put_line(strr);
EXECUTE IMMEDIATE strr INTO dt;
--dbms_output.put_line(to_char(dt));
if dt > from_date then
retval := 'YES';
end if;
if from_Date is null then
retval := 'YES';
end if;
return retval;
end;
function working_days( p_from date , p_too date ) return number as
retval number;
begin
select count(*) into retval from calendar where cdate between p_from and p_too and date_of.is_sunday(cdate) ='NO';
return retval;
end;
function month_remain_days return number as
retval number;
begin
select to_char(last_day(sysdate),'dd') - to_char(sysdate,'dd') into retval from dual ;
return retval;
end;
function month_days_passed return number as
retval number;
begin
select to_char(sysdate,'dd') - to_char(trunc(sysdate,'MM'),'dd') into retval from dual ;
return retval;
end;
function get_days(p_from date , p_too date ) return number as
retval number;
begin
select to_char(p_too,'dd') - to_char(trunc(p_from,'MM'),'dd')+1 into retval from dual ;
return retval;
end;
function get_month_remain_days(p_too date ) return number as
retval number;
begin
select to_char(last_day(p_too),'dd') - to_char(p_too,'dd') into retval from dual ;
return retval;
end;
end;
/
No comments:
Post a Comment