SAS 时间区间函数 INTNX 和 INTCK

SAS 区间函数 INTNX 和 INTCK

INTCK/INTNX 可以对date \ datetime\time 格式的时间进行计算,可以使用SASriqi进行日历计算,可以按照间隔递增计算日期,
也可以计算日期之间的时间间隔

INTNX(interval,start-from,increment<,alignment>); 按间隔递增时间,不设置format则返回的是数值形式的时间。

interval: 指定间隔的类型;
start-from:开始时间
increment:以interval 为基准增加的量,可正可负可为零;
alignment: 可选参数,控制函数返回值相对interval时间参数的位置
BEGINNING(B):将函数返回值调整至interval的开始(函数默认的参数选项,可不表明)
MIDDLE(M):将函数返回值调整至interval 的中间
END(E):将函数的返回值调整至interval的结束
SAME(S) :将函数的返回值调整至与interval一样的时间点

interval 包含 single_unit interval 和 multi_unit interval

single-unit intervals 包含:DAY/WEEKDAY/WEEK/TENDAY/SEMIMONTH/MONTH/QTR/SEMIYEAR/YEAR

single-unit intervals for TIME: SECOND/MINUTE/HOUR.
Datetime interval: 在 在DATE间隔类型前加前缀DT;

single-unit interval 例子:

 DATA test;
date_now = '23JUL2019'd;
date1 = INTNX('MONTH',date_now,3);
date1_1 = INTNX('MONTH',date_now,3,'B');
date1_2 = INTNX('MONTH',date_now,3,'M');
date1_3 = INTNX('MONTH',date_now,3,'E');
date1_4 = INTNX('MONTH',date_now,3,'S');
FORMAT date_now date1 date1_1 date1_2 date1_3 date1_4 DATE10.;
RUN;

multi-unit interval 例子:month2,day40

  data test1;
    date_now = '10JUL2019'D;
    date1 = INTNX('MONTH2',date_now,1);
    date2 = INTNX('DAY20',date_now,2);
    FORMAT date_now date1 date2  DATE10.;
    RUN;

注释:如果用INTNX计算两个日期的月份(MONTH)间隔,没有alignment 参数,
不论开始日期是哪一天,SAS都将其认为是所在月份的第一天。

INTCK(interval,start-date,end-date,<‘method’>):返回2个时间之间相差的间隔(interval)数。

method: 用于指定使用离散或连续的方式计算间隔数。
COUNTINUOUS(C/CONT) :连续
DISCRETE(D/DISC) :离散
其余的参数与INTNX一样;

例子:

 DATA test2;
date_now = '10JUL2019'D;
date = '12DEC2019'D;
date1 = '19SEP2019'D;
date2 = '01AUG2019'D;
num = intck('QTR',date_now,date); *返回值为1;
num1 = intck('QTR',date_now,date1);*返回值为0,因为在同一个Q;
num3 = intck('MONTH',date_now,date1);
num4 = intck('MONTH2',date_now,date1);
num5 = intck('MONTH',date_now,date2);*即使两个时间只差一天,由于不在同一个月份,返回值为1;
FORMAT date_now date date1 date2 date10.;
RUN;

你可能感兴趣的:(SAS,学习笔记,SAS时间函数,INTNX,INTCK)