2017-06-08 82 views
0

は、私は次の形式でSASからエクスポートしています出力に現在の日付を追加する必要がありますSAS - - カスタム日付形式YYYYMMDDhhmmssという

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

誰も私が持っている日付のカスタムフォーマットを作成する方法を知っていますか? datetime20。間違ったものを与える。

ありがとうございます。 proc format

+0

この質問は、昨夜、sas.communities.comで質問され、回答されました。 – Reeza

+0

私の日付フォーマットに合ったものは見つかりませんでした。いくつかのものが掲載されています。万が一その投稿へのリンクがありますか? –

答えて

3

B8601形式を使用します。

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

使用picture

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

2種類の溶液:

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

ありがとうございました!自分の日付でHOURの数字が1桁しか表示されない理由を知っていますか? 2017060895757.csv –

+0

'%let time =%sysfunc(TIME()、time8.0)'は、おそらく2つのステップより簡単でしょう。今の)? – Joe

+0

@MaiiaS。あなたはどの解決策をとっていますか? – Joe