我的日期集中有一堆日期时间格式的值,其格式为01JAN2020:00:00:00。我已经设法使用dtdate9压缩了这一点。但这会将格式更改为01JAN20。我想将格式更改为01/01/2020,有什么想法吗?
答案 0 :(得分:1)
据我所知,没有现成的SAS格式可以映射日期时间值来构造 mm / dd / yyyy 。
您可以使用FCMP
创建用户定义的函数,以计算转换并以自定义格式指定该函数。
示例:
proc fcmp outlib=work.functions.formats;
function dtmmddyy(datetime) $10;
return (put(datepart(datetime), mmddyy10.));
endsub;
run;
proc format;
value dtmmddyy
low-high = [dtmmddyy()]
;
run;
options cmplib=(work.functions);
data _null_;
dt = input ('01JAN2020:00:00:00', datetime20.);
put
dt= dtdate9. /
dt= dtmmddyy. /
;
run;
日志
dt=01JAN2020
dt=01/01/2020
答案 1 :(得分:1)
您可以编写这样的自定义日期时间类型格式
proc format;
picture dtdmy (default=10)
low - high = '%D/%0m/%Y' (datatype=datetime)
;
run;
data _null_;
dt = '01JAN2020:00:00:00'dt;
put dt = dtdate9.;
put dt = dtdmy.;
run;
答案 2 :(得分:1)
您还可以通过日期时间格式的长度来控制它,特别是如果仅用于显示(至少是MDY)时。不确定DMY格式。
data demo;
have = dhms('01Jan2020'd, 4, 3, 0);
x = have;
format x mdyampm10. have datetime22.;
run;
1 01JAN2020:04:03:00 1/1/20