将SAS中的日期时间(例如01JAN2020)转换为日期格式(例如01/01/2020)

时间:2020-08-13 11:25:36

标签: date sas formatting

我的日期集中有一堆日期时间格式的值,其格式为01JAN2020:00:00:00。我已经设法使用dtdate9压缩了这一点。但这会将格式更改为01JAN20。我想将格式更改为01/01/2020,有什么想法吗?

3 个答案:

答案 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