?? 常用日期和时间函数有:
MDY(m,d,yr) 生成yr年m月d日的SAS日期值
YEAR(date) 由SAS日期值date得到年
MONTH(date) 由SAS日期值date得到月
DAY(date) 由SAS日期值date得到日
WEEKDAY(date) 由SAS日期值date得到星期几
QTR(date) 由SAS日期值date得到季度值
HMS(h,m,s) 由小时h、分钟m、秒s生成SAS时间值
DHMS(d,h,m,s) 由SAS日期值d、小时h、分钟m、秒s生成SAS日期时间值
DATEPART(dt) 求SAS日期时间值dt的日期部分
INTNX(interval,from,n) 计算从from开始经过n个in间隔后的SAS日期。其中interval 可以取'YEAR'、'QTR'、'MONTH'、'WEEK'、'DAY'等。
比如,INTNX('MONTH', '16Dec1997'd, 3)结果为1998年3月1日。注意它总是返回一个周期的开始值。
INTCK(interval,from,to) 计算从日期from到日期to中间经过的interval间隔的个数,其中interval取'MONTH'等。比如,INTCK('YEAR', '31Dec1996'd, '1Jan1998'd)
计算1996年12 月31日到1998年1月1日经过的年间隔的个数,结果得2,尽管这两个日期之间实际只隔1年。
其它日期和时间函数还有DATE、TODAY、DATETIME、DATEJUL、JULDATE、HOUR、MINUTE、SECOND 、TIME、TIMEPART等。
例:
【SAS日期和时间函数】%let filedate ='20Nov2010'd;
data _null;
sdate='16Jan2011'd;
edate='16feb2011'd;
actual=datdif(sdate, edate, 'act/act');
days360=datdif(sdate, edate, '30/360');
conn='01feb2011:8:45'dt;
servdate=datepart(conn);
in_3m=INTNX('MONTH',&filedate,-3);
in_6m=INTNX('MONTH',&filedate,-6);
in_12m=INTNX('MONTH',&filedate,-12);
intck_day=INTCK('DAY',sdate,&filedate);
put servdate worddate.;
put actual= days360=;
format sdate yymmdd10.;
format edate yymmdd10.;
format servdateyymmdd10.;
format in_3m yymmdd10.;
format in_6m yymmdd10.;
format in_12m yymmdd10.;
run;
proc print data=https://www.it610.com/article/_null;
run;
result:
sdateedateactualdays360connservdatein_3min_6min_12mintck_day
2011-01-162011-02-16313016121691002011-02-012010-08-012010-05-012009-11-01-57
From:http://apple8160.blog.163.com/blog/static/79581470201141132342931/