Sunday, 25 August 2013

Age Calculation

CREATE OR REPLACE FUNCTION STLBAS.clac_age
(birthdate DATE, comparingdate DATE)
   RETURN CHAR
IS
   py       NUMBER;
   pm       NUMBER;
   pd       NUMBER;
   RESULT   VARCHAR2 (200);

BEGIN
   SELECT TRUNC (  (  TO_DATE (comparingdate, 'DD/MM/RR')
                    - TO_DATE (birthdate, 'DD/MM/RR')
                   )
                 / 365
                )
     INTO py
     FROM DUAL;

   SELECT TRUNC (  MOD ((  TO_DATE (comparingdate, 'DD/MM/RR')
                         - TO_DATE (birthdate, 'DD/MM/RR')
                        ),
                        365
                       )
                 / 30
                )
     INTO pm
     FROM DUAL;

   SELECT TRUNC (MOD (MOD ((  TO_DATE (comparingdate, 'DD/MM/RR')
                            - TO_DATE (birthdate, 'DD/MM/RR')
                           ),
                           365
                          ),
                      30
                     )
                )
     INTO pd
     FROM DUAL;

   RESULT := (py || ' Year ' || pm || ' Month ' || pd || ' Days');
   RETURN (RESULT);
  -- DBMS_OUTPUT.put_line ('SYSDATE''12/12/12');
END;

No comments:

Post a Comment