SAS - 自定义日期格式 - YYYYMMDDhhmmss

Mai*_* S. 0 format date sas informat

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

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

%let date_human = %sysfunc(today(), YYYYMMDDn8.);
Run Code Online (Sandbox Code Playgroud)

有人知道如何为我得到的日期创建自定义格式吗?日期时间20。给出一个不正确的。

谢谢你。

Tom*_*Tom 6

使用 B8601 格式。

%let now=%sysfunc(datetime());
%let date_human=%sysfunc(putn(&now,B8601DN8))%sysfunc(timepart(&now),B8601TM6);
Run Code Online (Sandbox Code Playgroud)


Stu*_*ski 5

两种解决方案:

1. 使用日期时间指令创建图片格式proc format

在这里,我们正在创建一种名为date_human. 您可以将其命名为任何您想要的名称。

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

%let date_human = %sysfunc(datetime(), date_human.);
Run Code Online (Sandbox Code Playgroud)

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.;
Run Code Online (Sandbox Code Playgroud)