具有自定义日期格式的sas格式变量-如何保留格式?

具有自定义日期格式的sas格式变量-如何保留格式?,sas,format,sas-macro,Sas,Format,Sas Macro,运行put sdt时;正确返回2020-02-21-09.28.28,但稍后调用sdt时,返回%put&sdt;它返回宏变量SDT解析为1897896509的未匹配值 如何使sdt保留其格式,还是需要继续使用sdt dbdate格式。每次我调用变量的时候 谢谢 这里是后面的procsql步骤,我需要在dbdate中使用sdt变量。格式: /*Create datetime format for db*/ proc format; picture dbdate other = '%Y-%

运行put sdt时;正确返回2020-02-21-09.28.28,但稍后调用sdt时,返回%put&sdt;它返回宏变量SDT解析为1897896509的未匹配值

如何使sdt保留其格式,还是需要继续使用sdt dbdate格式。每次我调用变量的时候

谢谢

这里是后面的procsql步骤,我需要在dbdate中使用sdt变量。格式:

/*Create datetime format for db*/

proc format;
picture dbdate
    other = '%Y-%0m-%0d-%0H.%0M.%0S' (datatype=datetime);
run;

/*Create variable that is 24 hours ago*/

data _null_;
sdt = intnx("HOUR",datetime(),-1,"SAME");
format sdt dbdate.;
call symput ('sdt',sdt);
run;

%put &sdt;

传递SQL需要一个日期值,该值由自定义图片格式呈现的表单表示。将该呈现发送到宏变量,而不是基础值

proc sql;
connect to db (database=bob user="&srvuser" password="&srvpass") ;
create table ted as 
select * from connection to db
(Select *
        from work 
        where num = 7387 and ADD_TMSTMP < &sdt);
disconnect from db;
quit;
run;
如果您进行了编码,则可以消除SQL之前的数据步骤

call symput ('sdt',put(sdt,dbdate.));

宏变量没有格式。如果要将格式化的值放入日志中,只需在数据步骤中使用put语句即可。谢谢,我需要能够稍后在proc sql中使用格式化的sdt变量,其中timstampproc sql; connect to db (database=bob user="&srvuser" password="&srvpass") ; create table ted as select * from connection to db (Select * from work where num = 7387 and ADD_TMSTMP < %sysfunc(intnx(HOUR,%sysfunc(datetime()),-1,SAME),dbdate.) ); disconnect from db; quit; run;
proc format;
  picture dbdate
    other = '''%Y-%0m-%0d-%0H.%0M.%0S''' (datatype=datetime);
run;