2017-01-12 2 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 символа предоставленной строки и сделаю их год. Тогда я буду рассматривать всех других персонажей, как месяц. Мы создадим истинную дату (числовой var) из этого с помощью функции MDY(), предположив, что день = 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;