SAS中的两个日期函数

标签:
sas日期intnxintck |
分类: SAS笔记 |
在SAS中有两个日期函数,intnx函数和intck函数,这两个函数在处理日期方面发挥着极其重要的作用,下面将利用编程来说明这两个函数的用法:
data intervals;
length date1 8 date2 8 interval 8;
format date1 yymmdd10. date2 yymmdd10. date datetime20.;
retain date1 '02JAN2009'd date2 '25SEP2010'd date3
5849;*date3代表从1960年到现在的间隔时间;
interval=INTCK('day',date1,date2);
date=INTNX('dtday','01JAN1960:00:00:00'dt,date3);
output;
*间隔的天数,等于date2-date1,以及加上date3的天数,“特别注意在day、weekday、week、month、qtr、year前面加dt,如果是second、minute、hour则不用加dt”;
interval=INTCK('weekday',date1,date2);
date=INTNX('dtweekday','01JAN1960:00:00:00'dt,date3);
output;
*间隔的工作日数,排除周六、周日,以及加上date3的工作日数;
interval=INTCK('week',date1,date2);
date=INTNX('dtweek','01JAN1960:00:00:00'dt,date3);
output;
*间隔的周数,以及加上date3的周数;
interval=INTCK('month',date1,date2);
date=INTNX('dtmonth','01JAN1960:00:00:00'dt,date3);
output;
*间隔的月数,以及加上date3的月数;
interval=INTCK('qtr',date1,date2);
date=INTNX('dtqtr','01JAN1960:00:00:00'dt,date3);
output;
*间隔的季数,以及加上date3的季数;
interval=INTCK('year',date1,date2);
date=INTNX('dtyear','01JAN1960:00:00:00'dt,date3);
output; *间隔的年数,以及加上date3的年数;
run;
得到如下结果:
http://s9/mw690/0025UTvnzy6I9ngH24g18&690
intnx函数的另外一种功能:
data _null_;
format beginning middle end sameday date9.;
beginning=intnx('month', '05FEB2010'd, 1, 'b');
middle=intnx('month', '05FEB2010'd, 1,
'm');
end=intnx('month', '05FEB2010'd, 1, 'e');
sameday=intnx('month', '05FEB2010'd, 1, 's');
put beginning middle end sameday;
run;
在log中得到如下结果:
01MAR2010 16MAR2010 31MAR2010 05MAR2010