進行格式轉換,你需要的put()
的數字字符轉換和字符input()
功能數字。要在宏調用中使用SAS數據階躍函數,需要使用%sysfunc()
宏函數。在%sysfunc()
中取代put()
/input()
與putn()
/putc()
/inputn()
/inputc()
根據here。 %sysfunc()
也允許爲其輸出指定格式作爲第二個參數。
%let date = '1-1-2014';
%let longDate = %sysfunc(inputn(%sysfunc(compress(&date., "'")), ddmmyy10.), WEEKDATE32.);
%put &longDate.;
的compress()
功能只是從原來的宏變量剝離的報價,所以該日期可使用ddmmyy10.
了信息讀取。
編輯:逐步細分。
%let date = '1-1-2014';
%put &date.;
/* Strip away the single quotes */
%let deQuotedDate = %sysfunc(compress(&date., "'"));
%put &deQuotedDate.;
/* Read in the date using ddmmyy. informat and convert to SAS date */
%let sasDate = %sysfunc(inputn(&deQuotedDate., ddmmyy10.));
%put &sasDate.;
/* Convert the SAS date to the required format */
%let longDate = %sysfunc(putn(&sasDate., weekdate32.));
%put &longDate.;
謝謝!這工作完美。我將指出,您需要將%let sasDate行更改爲ddmmyy10。如果您運行您編寫的代碼,則最終的日期爲2020年1月1日,因爲它會讀入年份(2014年)的前兩個數字,而不是全部四個數字。無論哪種方式,再次感謝! – Ian 2014-09-30 20:32:22
好的。我應該在發佈之前檢查它。現在編輯,謝謝。 – SRSwift 2014-09-30 20:45:45