我有以下变量
mhstdtc
-----------
2011-01-01
2015-02-01
2002
2001
2003-03
2003-12
这是我用来转换变量
的代码ASTDTMC=INPUT(MHSTDTC,is8601da.);
PUT ASTDTMC DATE9.;
它只对变量有yyyy-mm-dd值,剩下的都是空白。请帮我转换yyyy和yyyy-mm值;
提前致谢。
答案 0 :(得分:0)
左侧使用SUBSTR的一种方式。
25 data _null_;
26 input iso :$10.;
27 mask = '....-06-15';
28 substr(mask,1,length(iso))=iso;
29 ASTDTM=INPUT(mask,is8601da.);
30 format astdtm date9.;
31 put 'NOTE: ' (_all_)(=);
32 cards;
NOTE: iso=2011-01-01 mask=2011-01-01 ASTDTM=01JAN2011
NOTE: iso=2015-02-01 mask=2015-02-01 ASTDTM=01FEB2015
NOTE: iso=2002 mask=2002-06-15 ASTDTM=15JUN2002
NOTE: iso=2001 mask=2001-06-15 ASTDTM=15JUN2001
NOTE: iso=2003-03 mask=2003-03-15 ASTDTM=15MAR2003
NOTE: iso=2003-12 mask=2003-12-15 ASTDTM=15DEC2003
答案 1 :(得分:0)
如果您的原始日期为字符格式,请在每个日期添加“01-01”,然后进行转换。如果您的日期不是字符格式,请将它们转换为字符,然后将“01-01”添加到它们,并尝试以下代码:
data have ;
input mhstdtc $10.;
cards;
2011-01-01
2015-02-01
2002
2001
2003-03
2003-12
;
data want;
set have;
ASTDTMC2=compress(catx("",MHSTDTC,"-01-01")," ","");
ASTDTMC3=inPUT(ASTDTMC2,yymmdd10.);
run;
结果在ASTDTMC3中。
18628
20120
15341
14976
15765
16040