SAS - 自定义日期格式 - YYYYMMDDhhmmss

时间:2017-06-08 13:20:22

标签: date sas format informat

我需要在以下格式从SAS导出的输出中添加当前日期: filename_YYYYMMDDhhmmss.csv

我正在通过以下方式创建一个宏变量:

%let date_human = %sysfunc(today(), YYYYMMDDn8.);

有人知道如何为我所拥有的日期创建自定义格式吗? datetime20。给出一个不正确的。

谢谢。

3 个答案:

答案 0 :(得分:4)

使用B8601格式。

%let now=%sysfunc(datetime());
%let date_human=%sysfunc(putn(&now,B8601DN8))%sysfunc(timepart(&now),B8601TM6);

答案 1 :(得分:2)

两种解决方案:

<强> 1。使用proc format

创建包含datetime指令的图片格式

在这里,我们正在创建一个名为date_human的格式。你可以用任何你喜欢的名字命名。

proc format;
    picture date_human other='%0Y%0M%0D%0H%0M%0S' (datatype=datetime);
run;

%let date_human = %sysfunc(datetime(), date_human.);

<强> 2。将各种宏变量混合在一起

/* YYYYMMDD part */
%let yymmdd   = %sysfunc(today(), yymmdd8.);

%let datetime = %sysfunc(datetime());
%let time     = %sysfunc(putn(%sysfunc(timepart(&datetime.)), time8.0));

/* hhmmss part */
%let hour     = %scan(&time., 1, :);
%let min      = %scan(&time., 2, :);
%let sec      = %scan(&time., 2, :);

/* Put it all together */
%let date_human = &yymmdd.&hour.&min.&sec.;

答案 2 :(得分:0)

picture中使用proc format

proc format;
    *custom format for the datetime values;
   picture cust_dt other = '%0Y%0m%0d%0H%0M%0S' (datatype=datetime);
run;

** put into macro **;
data test;
    dt = datetime();
    call symputx("dt",strip(put(dt,cust_dt.)));
run;

%put &dt.;

** use macro for filename **;
data file_&dt.; set sashelp.class;
run;