SAS-从数据库返回的更改日期格式

时间:2018-11-01 16:17:22

标签: sas odbc

我要从许多Teradata表中提取数据,这些表的日期以MM/DD/YYYY格式存储(例如:8/21/200310/7/2013)。 SAS以DDMMMYYYY或DATE9格式(例如:21AUG200307OCT2013)返回它们。有没有一种方法可以强制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格式返回该值。感谢您的帮助!

1 个答案:

答案 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;

在这里找到: https://communities.sas.com/t5/SAS-Procedures/Change-DATE-formats-to-DDMMYYS10-for-ALL-unknown-number-date/td-p/366637

相关问题