使用intnx去年在SAS

时间:2017-06-27 15:40:16

标签: sas

我想在我的变量'day_3_ago'

之前一年拉出相同的日期

我的代码:

%macro date; 
data _null_;
call symput ('day_3_ago', put(intnx('day',today(),-3, 'b'),yymmddn8.));
run;
%mend;

%date;

%let last_year_3dayago = [1 year before day_3_ago]

例如,如果我今天运行此代码,day_3_ago将是20170624.我希望last_year_3dayago为20160624

我目前的解决方案是:

%let last_year_3daygo = %sysfunc(intnx(day,%sysfunc(inputn(&day_3)ago.,yymmdd8)),-365),yymmddn8);

但这并不能说明闰年。

2 个答案:

答案 0 :(得分:2)

不要将intnxday一起使用,而是使用year并使用s(或same)代替b结束该功能。

data _null_;
x = intnx('year',today()-3,-1,'s');
putlog x :date9.;
run;

答案 1 :(得分:0)

我修改了Longfish的代码,用变量last_year_3dayago来解决您的需求:

%let last_year_3dayago = 20170624;
data _null_;
  x = intnx('year',input("&last_year_3dayago.",b8601da.),-1,'s');
  putlog x :date9.;
run;