常用日期和时间函数有:           
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 取月或周的第一或最后一天

data _null_;

m1=intnx(\'month\',today(),0,\'E\');

m2=intnx(\'month\',today(),0,\'B\');

w1=intnx(\'week\',today(),0,\'E\');

w2=intnx(\'week\',today(),0,\'B\');

format m1 m2 w1 w2 date9.;

put m1 m2 w1 w2;

run;

例:

%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 servdate  yymmdd10.;        
       format in_3m yymmdd10.;
       format in_6m yymmdd10.;
       format in_12m yymmdd10.;
    run;                    
    proc print data=_null;
    run;

result:

 sdate                edate       actual   days360        conn             servdate       in_3m         in_6m           in_12m       intck_day   
 2011-01-16  2011-02-16     31        30           1612169100   2011-02-01  2010-08-01  2010-05-01  2009-11-01      -57      

 

收藏 打印