sas - SAS - 更改从数据库返回的日期格式
问题描述
我从许多以MM/DD/YYYY
格式(例如:8/21/2003
、、10/7/2013
)存储日期的 Teradata 表中提取数据。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
默认情况下将值作为格式返回。谢谢你的帮助!
解决方案
根据对我的问题的评论,我能够使用 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;
推荐阅读
- function - Powershell:每次从函数运行时添加数据的函数
- html - 服务现在在 IE11 中提供空的推荐人
- c# - 如何阻止 0 出现在我的数组中
- java - 为什么我必须将 GeoFireStore 中的集合和文档名称预先设置为 setlocation
- c++ - C++ 如何正确限制 FPS(使用 GLFW)
- python - 无法与 discord.py 中的自定义表情符号做出反应:(错误代码:10014):未知表情符号
- python - 熊猫在尝试将所有 csv 合并为一个 csv 时生成一个空 csv
- python - 如何根据与值的辅助数据框匹配的条件填充主数据框列中的 NaN 以使用多个填充值填充 NaN
- javascript - 我如何从java脚本中的方括号中获取数据
- python-3.x - 如何获取系列的元素索引