Proc SQL可以追溯到整整14个月

时间:2018-07-18 20:15:27

标签: sql sas date-format proc-sql

下午好,

%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个月前的最后十二天。我如何安排这些%let陈述反映我的意愿?谢谢!

1 个答案:

答案 0 :(得分:0)

首先使用数据步骤显示它会更容易:

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,如有必要。