Larry Very cool - thanks for sharing this with all of us!
David Blocker [EMAIL PROTECTED] 781-784-1919 Fax: 781-784-1860 Cell: 339-206-0261 ----- Original Message ----- From: "Lawrence Lustig" <[EMAIL PROTECTED]> To: "RBG7-L Mailing List" <[EMAIL PROTECTED]> Sent: Wednesday, September 15, 2004 9:14 PM Subject: [RBG7-L] - Re: Calculation Problem > > -- v_yr_emp should be 7 and vmod 5 not 6! > > Here are two stored procedures I wrote to calculate Age (complete years between > two dates) and number of complete months between two dates. Real years and > months are calculated, not using the approximation of 30 and 365 days. > > Watch out for wrapping. . . > > -- MonthDiff.PRC: Returns number of complete months from pMD_Date1 to pMD_Date2 > -- PUT MthDiff.PRC AS MonthDiff pMD_Date1 DATE pMD_Date2 DATE RETURN INTEGER > > IF IDAY(.pMD_Date2) <= IDAY(.pMD_Date1) THEN > RETURN (((IYR4(.pMD_Date2)-IYR4(.pMD_Date1))*12) + > (IMON(.pMD_Date2)-IMON(.pMD_Date1)-1)) > ELSE > RETURN (((IYR4(.pMD_Date2)-IYR4(.pMD_Date1))*12) + > (IMON(.pMD_Date2)-IMON(.pMD_Date1))) > ENDIF > > -- CalcAge.PRC: Calculates age as of a given date. > -- PUT CalcAge.PRC AS CalcAge pAsOfDate DATE, pBirthDate DATE RETURN INT > > IF ((IMON(.pBirthDate)*100)+IDAY(.pBirthDate)) >= > ((IMON(.pAsOfDate)*100)+IDAY(.pAsOfDate)) THEN > RETURN (IYR4(.pAsOfDate) - IYR4(.pBirthDate) - 1) > ELSE > RETURN (IYR4(.pAsOfDate) - IYR4(.pBirthDate)) > ENDIF > > -- > Larry > >
