SAS - Изменить формат даты, возвращаемый из базы данных - PullRequest
0 голосов
/ 01 ноября 2018

Я извлекаю данные из многих таблиц 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 по умолчанию. Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 01 ноября 2018

Согласно комментариям к моему вопросу, я смог понять это с помощью функции 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

...