2016-12-15 60 views
0

我有以下變量如何字符變量轉換爲數值日期變量

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 
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 
相關問題