我要从许多Teradata表中提取数据,这些表的日期以MM/DD/YYYY
格式存储(例如:8/21/2003
,10/7/2013
)。 SAS以DDMMMYYYY
或DATE9格式(例如:21AUG2003
,07OCT2013
)返回它们。有没有一种方法可以强制SAS以MM/DD/YYYY
或MMDDYY10格式返回日期变量?我知道我可以为特定的列手动指定它,但是我设置了一个宏来对65个不同的表执行相同的查询:
%macro query(x);
proc sql;
connect using dbase;
create table &x. as select * from connection to dbase
(select *
from table.&x.);
disconnect from dbase;
quit;
%mend(query);
%query(bankaccount);
%query(budgetcat);
%query(timeattendance);
其中一些表将具有日期变量,而有些则不会。因此,我希望默认情况下以MMDDYY10
格式返回该值。感谢您的帮助!
答案 0 :(得分:2)
根据对我的问题的评论,我能够使用FMTINFO函数弄清楚这一点。我几乎使用了相同的代码:
proc contents data=mylib._all_ noprint out=contents;
run;
data _null_;
set contents;
where fmtinfo(format,'cat')='date';
by libname memname ;
if first.libname then call execute(catx(' ','proc datasets nolist lib=',libname,';')) ;
if first.memname then call execute(catx(' ','modify',memname,';format',name)) ;
else call execute(' '||trim(name)) ;
if last.memname then call execute(' DDMMYYS10.; run;') ;
if last.libname then call execute('quit;') ;
run;