SAS学习(12)——INTCK函数和INTNX函数计算时间间隔
SAS中INTCK函数与INTNX函数的使用
INTCK函数
INTCK函数主要是用于计算给定的两个时间之间的时间间隔,时间间隔单位可以选择年、月、周或者天。需要注意的是,INTCK函数是以一个固定的间隔计算时间间隔,而不是以指定的时间为基准计算间隔。函数的基本语法如下:
INTCK('interval'<multiple>, start-date, end-date<,'Method'>)
其中,
'interval'用于指定时间间隔的单位,可以选择DAY、WEEKDAY、WEEK、MONTH、QTR、SEMIYESR、YEAR等等,不区分大小写。
<multiple>可以指定一个可选的乘数,将间隔设置为基本间隔类型的周期的倍数。例如,间隔YEAR2由2年或2年的周期组成
start-date是开始时间,end-date是截止时间(或者说结束时间)
可选语句<‘Method’>可以指定计算时间间隔是使用连续的方法('C')还是离散('D')的方法,二者的区别主要在于,'C'是以起始时间为标准用来计算时间间隔,常用来计算纪念日等,'D'是上述INTCK函数的默认计算方式
data a;
week_test1 = intck('week','30Dec2017'd,'31Dec2017'd,'c');
week_test2 = intck('week','30Dec2017'd,'31Dec2017'd,'D'); /*Default*/
run;
proc print data=a;
run;
上述运行结果是:
因为2017年12月31号是一个周天,包含了函数计算周这个时间间隔的时间点(周天),所以尽管两个时间只相差1天,但是用INTCK函数默认计算方法计算时间间隔是1周。
举个实际使用INTCK函数的例子
计算纪念日:
data b;
WeddingDay='14feb2000'd;
Today=today();
YearsMarried=INTCK('YEAR',WeddingDay,today(),'C');
format WeddingDay Today date9.;
run;
proc print data=b;
run;
运行结果如下:
INTNX函数
INTNX函数与INTCK函数的功能类似,都是与计算时间间隔有关。INTNX函数是给定一个日期,并给定一个时间间隔的倍数,计算新的日期。例如,计算今天(2023年12月16日)6周后的日期。函数的基本语法如下:
INTNX('interval'<multiple>, start-from, increment<, 'Alignment'>)
其中,
'interval'用于指定时间间隔的单位,可以选择DAY、WEEKDAY、WEEK、MONTH、QTR、SEMIYESR、YEAR等等,不区分大小写。
<multiple>可以指定一个可选的乘数,将间隔设置为基本间隔类型的周期的倍数。例如,间隔YEAR2由2年或2年的周期组成
start-from是开始时间
increment是一个代表计算未来(或过去)时间间隔的整数(正负均可)
alignment是一个可选语句,表示的是希望返回时间是时间间隔的第一天,时间间隔的中间日期、最后一天,包含4个选择:
- Beginning (B)(默认选择)
- Middle (M)
- End (E)
- SAME (Sameday/S)
举个实际使用INTNX函数的例子:
data c;
Month_1=intnx('month','02Jan2018'd,5,'B');/*Default*/
Month_2=intnx('month','02Jan2018'd,5,'M');
Month_3=intnx('month','02Jan2018'd,5,'E');
Month_4=intnx('month','02Jan2018'd,5,'S');
format Month_1 Month_2 Month_3 Month_4 date9.;
run;
proc print data=c;
run;
输出结果如下:
可以比较明显看出区别。
【参考资料】
[1] SAS(R) 9.3 Functions and CALL Routines: Reference (INTCK)
[2] SAS(R) 9.3 Functions and CALL Routines: Reference (INTNX)
更多推荐
所有评论(0)