BraveMadMan 发表于 2010-7-23 13:14 
为什么不能用yrdif计算年龄?看SAS的官方答案:
“If you use the YRDIF function to calculate a p ...
http://support.sas.com/kb/36/977.html
UPDATE TO THIS NOTE: 15JUL2011 A new option was added to YRDIF in SAS 9.3. This option is called AGE and can be used to calculate a person's age accurately.
好像SAS 9.13 SP4、SAS 9.3版修正这错误了,现在用yrdif可以计算年龄了。
data diff;
sdate='20Sep1985'd;
edate='20May2013'd;
y30260=yrdif(sdate,edate,'30/360');
yactact=yrdif(sdate,edate,'ACT/ACT');
yact360=yrdif(sdate,edate,'ACT/360');
yact365=yrdif(sdate,edate,'ACT/365');
d30260=datdif(sdate,edate,'30/360');
dactact=datdif(sdate,edate,'ACT/ACT');
dact360=datdif(sdate,edate,'ACT/360');
dact365=datdif(sdate,edate,'ACT/365');
age=intck('year',sdate,edate);
days=intck('day',sdate,edate);
months=intck('month',sdate,edate);
age1 = floor((intck('month',sdate,edate)- (day(edate) < day(sdate))) / 12);
format sdate yymmdd10. edate yymmdd10.;
run;
proc print data=diff;
title "YRDIF/DATDIF/INTCK函数比较";
run;
在SAS 9.13 SP4 、 SAS 9.3上结果一致。