Proc SQL 可以追溯到整整 14 个月
Proc SQL dating back 14 whole months
下午好,
%let startdate = '2017-01-01';
%let enddate = '2018-07-01';
%let start_dt = '01jan2017:00:00:00'dt;
%let end_dt = '01jul2018:00:00:00'dt;
我想使这个 Proc SQL 自动化,这样每当我 运行 程序时,它都会自动获取从最近一个月到十四个月前的数据。今天是7月18日,我不要今天这个月的前18天,也不要占14个月前的最后12天。我如何安排这些 %let 语句来反映我的意愿?谢谢!
首先使用数据步显示它更容易:
data _null_ ;
seed = date() ;
enddate = intnx('month',seed, 0,'b') ; /* move to the beginning of current month */
startdate = intnx('month',seed,-18,'b') ; /* move to the beginning of the 18th month ago */
/* put these into macro variables */
call symput('STARTDATE',cats("'",put(startdate,yymmdd10.),"'")) ;
call symput('ENDDATE' ,cats("'",put(enddate ,yymmdd10.),"'")) ;
/* use dhms(date,h,m,s) to create a datetime */
call symput('START_DT' ,cats("'",put(dhms(startdate,0,0,0),datetime19.),"'d")) ;
call symput('END_DT' ,cats("'",put(dhms(enddate,0,0,0) ,datetime19.),"'d")) ;
run ;
然后您可以将其转换为使用 %LET
和 %SYSFUNC
(如有必要)。
下午好,
%let startdate = '2017-01-01'; %let enddate = '2018-07-01';
%let start_dt = '01jan2017:00:00:00'dt; %let end_dt = '01jul2018:00:00:00'dt;
我想使这个 Proc SQL 自动化,这样每当我 运行 程序时,它都会自动获取从最近一个月到十四个月前的数据。今天是7月18日,我不要今天这个月的前18天,也不要占14个月前的最后12天。我如何安排这些 %let 语句来反映我的意愿?谢谢!
首先使用数据步显示它更容易:
data _null_ ;
seed = date() ;
enddate = intnx('month',seed, 0,'b') ; /* move to the beginning of current month */
startdate = intnx('month',seed,-18,'b') ; /* move to the beginning of the 18th month ago */
/* put these into macro variables */
call symput('STARTDATE',cats("'",put(startdate,yymmdd10.),"'")) ;
call symput('ENDDATE' ,cats("'",put(enddate ,yymmdd10.),"'")) ;
/* use dhms(date,h,m,s) to create a datetime */
call symput('START_DT' ,cats("'",put(dhms(startdate,0,0,0),datetime19.),"'d")) ;
call symput('END_DT' ,cats("'",put(dhms(enddate,0,0,0) ,datetime19.),"'d")) ;
run ;
然后您可以将其转换为使用 %LET
和 %SYSFUNC
(如有必要)。