2017-01-12 89 views
0
Data test; 
x="20161"; 
run; 

我有一個日期「20161」(即'jan2016')作爲字符,現在我想把它顯示爲「jan2016」,我怎麼做到這一點?字符到日期轉換

+0

您可以使用格式。 'PROC FORMAT'允許你創建你自己的格式來改變你的數據的外觀: http://www2.sas.com/proceedings/sugi30/001-30.pdf –

+0

如果你關心,兩位數的月份如何顯示關於那些? 「201610」? – superfluous

回答

0

爲了清楚起見,您從一個字符串變量開始,並且希望結果是一個字符串變量?這似乎是潛在的限制,因爲日期更容易被操縱爲數字。

從字面上看,我會解析提供的字符串的前4個字符,並使它們成爲一年。然後我會對待所有其他角色,比如這個月。我們將使用MDY()函數創建一個真正的日期(numeric var),假設day = 1。

這給了我們一箇中間的數字變量,我們將傳遞給PUT()函數,以便我們可以將數字轉換爲您想要的MONYY7中的字符串。格式。最後一部分是您要輸出字符串小寫,所以我們將最終結果包裝在一個LOWCASE()函數中。

Data test; 
x="20161"; *the input; 
y = mdy(substr(x,5),1,substr(x,1,4)); *a temporary intermediate variable that's a date/numeric var; 
z = lowcase(put(y, MONYY7.)); *convert back to string in the desired format, and lowercase it; 
drop y; *no longer needed; 
run;