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)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐