如何使用dictionary.columns从库中仅选择具有日期的列


  data dtetst;
        set date(keep= dtevar);
        dtevar=year(dtevar);
    run;

你好,我正在提取&从整个日期显示年份这个场景我已经实现了->上面的代码可以很好地从日期中提取年份

,但我有另一种情况,只从具有日期数据类型的库中定位那些列,即只选择那些包含日期的列,例如-> mdtc 2012-10-16, 2014-06-15, 2000-08-14 ,2007-12-28

i tried below code->

 PROC SQL noprint;
     select distinct catx(".",libname,memname) into :list separated by " "
     from dictionary.columns
     where libname = upcase("dte") and format in('YYMMDD10.');
quit;
        %put &list;
        data tst3;
        set &list;
        date=year(mdtc);
        run;

我已经更新了我的代码,它选择具有特定格式的列但是,我在日期列上使用的year函数从日期中提取年份,它没有执行预期的操作,即从日期中提取年份,如下所示。

input data->  mdtc 2012-10-16, 2014-06-15, 2000-08-14 ,2007-12-28

在列mdtc上使用年函数后的期望输出->

 mdtc 
 2012
 2014
 2000
 2007

在SAS表中不可能可靠地检测到'date'数据类型,因为所有日期/日期时间都以简单数字的形式存储(在SAS中只能使用数字和字符数据类型)。SAS日期就是从1960年1月1日开始的天数。

但是,您可以检测到那些应用了日期格式的列,这将合理地指示日期列,例如:

proc sql;
create table example as select * 
  from dictionary.columns 
  where libname='SASHELP'
  and format in ('DATE9.','DATE7.');

这种方法的缺点是需要显式列出所使用的每个日期格式。此外,它依赖于所应用的日期格式。它还假定我们谈论的是数字日期(没有办法检测存储为字符串的日期,这种情况有时会发生)。

相关内容

  • 没有找到相关文章

最新更新