我使用INTNX函数计算月间隔。我发现结果经常有一天会超出我的预期...例如,看看这段代码:
data test;
olddate='20140531';
oldsasdate=input(olddate,yymmdd8.);
newsasdate=intnx('month',oldsasdate,-17);
newdate=put(newsasdate,yymmdd8.);
run;
在此代码中,我尝试查找2014年5月31日之前17个月的日期。我希望该函数返回11/30/2012,但它返回12/1/2012。知道这里发生了什么吗?有办法解决这个问题吗?
答案 0 :(得分:2)
intnx
的默认值是与月初一致。它基本上跟踪区间边界,因此每次从MM / 01 / YY到MM / 30 / YY时,它会间隔一个间隔。
所以,
data _null_;
x = intnx('month','31MAY2014'd, -1);
put x= date9.;
run;
返回' 01APR14' d,而不是' 30APR14' d。
您可以将其更改为'相同'与可选的第4个参数对齐(我相信SAS 9.2+。)
data _null_;
x = intnx('month','31MAY2014'd, -1,'s');
put x= date9.;
run;