SAS中intck函数计算日期天数间隔等妙用

来源:互联网 发布:c语言 char 编辑:程序博客网 时间:2024/06/02 02:08
SAS中intck函数计算日期天数间隔等妙用
 
大家肯定知道自己几岁,度过了多少个季节。那多少人知道自己从出生到现在有多少个月,多少个周、多少天吗?
SAS可以帮你解决,用intck函数,将你的出生日期和今天的日期放在下列函数就OK!可以应用到客户的入网时长等计算中。

1.利用intck函数
data a;
format x date9. y date9.;
x='05DEC1985'd;y='18APR2017'd;
year=intck('year',x,y);
qtr=intck('qtr',x,y);
month=intck('month',x,y);
week=intck('week',x,y);
day=intck('day',x,y);
put year= qtr= month= week= day=;
run;

改进优化后:
data aaa;
input birthday mmddyy8.;
format birthday mmddyy8.;
bday=put(birthday,mmddyy8.);
today=put(today(),mmddyy8.);
age=intck('year',birthday,today());  /*会四舍五入年龄*/
age1 = floor
((intck('month',birthday,today())
- (day(today()) < day(birthday))) / 12);
cards;
01251956
09021968
02181948
10271999
;
run; 

2.利用宏
%macro yourdays(birthday=);
data _null_;
file print;
y=today();
x=&birthday;
year=intck('year',x,y);
qtr=intck('qtr',x,y);
month=intck('month',x,y);
week=intck('week',x,y);
day=intck('day',x,y);
put "你在这个世界上活了"year"年,"month"月," week"星期," day"天。";
run;
%mend;
%yourdays(birthday='08jun1988'd);

改进优化后:
%macro yourdays(birthday=);
ods listing close;
ods html;
data _null_;
file print;
time=time();
y=today();
x=&birthday;
year=Intck('year',x,y);
qtr=Intck('qtr',x,y);
month=Intck('month',x,y);
week=Intck('week',x,y);
day=Intck('day',x,y);
put 100*'*';
put "现在是"y:yymmdd10."号" time:time5."分。";
put;
put "截止到目前,你在这个世界上活了"year"年," month"个月," week"个星期," day"天。";
put;
put "请珍惜你生命中的每一天!";
put;
put 100*'*';
run;
ods html close;
ods listing;
%mend;
/*将以下日期改为你的生日,直接运行全部程序*/
%yourdays(birthday='08jun1988'd);
原创粉丝点击