INTNX功能是休息一天

时间:2014-07-23 13:28:29

标签: sas

我使用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。知道这里发生了什么吗?有办法解决这个问题吗?

1 个答案:

答案 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;