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