2017-06-08 426 views
0

我需要将当前日期添加到我从SAS在下面的格式导出输出:filename_YYYYMMDDhhmmss.csvSAS - 自定义日期格式 - 为YYYYMMDDhhmmss

我创建一个宏变量方式如下:

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

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

谢谢。

+0

昨晚在sas.communities.com上提问并回答了此问题。 – Reeza

+0

我找不到适合我的日期格式的任何内容,还有一些不同的内容已发布。你有任何机会链接到该职位? –

回答

3

使用B8601格式。

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

使用pictureproc 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; 
1

两个解决方案:

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.); 

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.; 
+0

感谢您的快速回复!你知道为什么我在约会时只能得到一位数字吗? 2017060895757.csv –

+0

'%let time =%sysfunc(TIME(),time8.0)'可能比你做的两个步骤更容易,不是吗(如果你只是想让时间部分现在)? – Joe

+0

@MaiiaS。你要去哪个解决方案? – Joe