2014-11-04 87 views
0

宏變量,我知道這樣的事情設置上月/年爲SAS

%let start_date = %sysfunc(intnx(day,%sysfunc(date()),-1),DATE9.); 
%put &start_date; 

%let start_month = %sysfunc(month(intnx(month,%sysfunc(date()),-1),DATE9.)); 
%put &start_month; 

%let start_date = %sysfunc(intnx(month,%sysfunc(date()),-1),DATE9.); 
%put %sysfunc(month(&start_date)); 

不起作用。

+0

你能檢查你的let語句的單個部分是否工作嗎?像檢查intnx是否返回它應該? – ZAT 2014-11-04 07:08:30

+1

%start_month =%sysfunc(month(%sysfunc(intnx(month,%sysfunc(date()), - 1)))); – 2014-11-04 11:37:02

回答

2

您需要在INTNX之前爲您的示例使用另一個%SYSFUNC。

%let start_month = %sysfunc(month(%sysfunc(intnx(month,%sysfunc(date()),-1)))); 
%put &start_month; 

但是,我更喜歡使用DATA NULL,其中%LET需要很多%SYSFUNC語句。以下給出了相同的結果。

data _null_; 
call symputx('start_month ', month(intnx('month',date(),-1))); 
run; 
%put &start_month.;