Sunday, July 29, 2007

Oracle DateDiff function

This function work like DateDiff function in SQL.

create or replace function datediff(p_what in varchar2, p_d1 in date, p_d2 in date)

return number is l_result number; begin select decode( upper(p_what), 'SS', (p_d2-p_d1)* 24 * 60 * 60 , 'MI', (p_d2-p_d1)* 24 * 60 , 'HH', (p_d2-p_d1)* 24 , 'DD', trunc(to_number(to_char(to_date(p_d2,'DD-MON-YYYY'), 'j')) - to_number(to_char(to_date(p_d1,'DD-MON-YYYY'), 'j')))
, 'MM', trunc(months_between(to_date(to_char(p_d2,'DD-MON-YYYY'), 'DD-MON-YYYY'), to_date(to_char(p_d1,'DD-MON-YYYY'), 'DD-MON-YYYY')))
, 'YY', trunc(months_between(to_date(to_char(p_d2,'DD-MON-YYYY'), 'DD-MON-YYYY'), to_date(to_char(p_d1,'DD-MON-YYYY'), 'DD-MON-YYYY')) / 12)
, NULL ) into l_result from dual; return(l_result); end datediff;

No comments: