-- Returns Varchar2
FUNCTION F_AGE(DOB DATE) RETURN VARCHAR2
AS
YR NUMBER;
MM NUMBER;
DD NUMBER;
AGE VARCHAR2(150);
TM DATE;
HH NUMBER;
MI NUMBER;
MIS NUMBER;
BEGIN
YR := Trunc(Months_Between(SYSDATE, DOB)/12);
MM := Abs(To_Char(SYSDATE,'MM')-To_Char(DOB,'MM'));
DD := Abs(To_Char(SYSDATE,'DD')-To_Char(DOB,'DD'));
TM := To_Date(To_Char(SYSDATE,'DD-MM-RRRR')||' '||To_Char(dob,'HH24MI'),'DD-MM-RRRR HH24MI');
HH := TRUNC((SYSDATE-TM)*24);
MIS := ROUND((SYSDATE-TM)*1440);
MI := MIS - (HH*60);
BEGIN
SELECT Decode(Nvl(YR,0),'0',NULL,Decode(YR,'1',YR||' Year ' ,YR||' Years ' ))||
Decode(Nvl(MM,0),'0',NULL,Decode(MM,'1',MM||' Month ' ,MM||' Months ' ))||
Decode(Nvl(DD,0),'0',NULL,Decode(DD,'1',DD||' Day ' ,DD||' Days ' ))||
Decode(Nvl(HH,0),'0',NULL,Decode(HH,'1',HH||' Hour ' ,HH||' Hours ' ))||
Decode(Nvl(MI,0),'0',NULL,Decode(MI,'1',MI||' Minute' ,MI||' Minutes' ))
INTO age
FROM dual;
END;
RETURN(AGE);
END;
No comments:
Post a Comment