Преобразование даты в строку в шаге данных SAS monyy5. до yymmn6
В SAS EG на шаге данных я пытаюсь преобразовать дату в строку в следующих форматах:
JUN18
в '201806'
Я могу преобразовать противоположное направление, используя шаг данных следующим образом:
data date;
length b $6;
b='201806';
new_b=input(b, yymmn6.);
format new_b monyy5.;
Результатом является то, что new_b
знак равно JUN18
, Я попробовал противоположное направление, и что-то не так, и я не могу понять, что мне не хватает. Кто-нибудь знает, как преобразовать эти типы данных?
Благодарю.
2 ответа
Использовать PUT
или же PUTN
функция для преобразования значения даты SAS в строку, содержащую представление даты.
data _null_;
mydate = '18JUN2018'D;
* variable is numeric and contains a SAS date value;
format mydate monyy.;
* variable given a format that is used when value is output (PROC rendered or PUT);
put mydate=;
* the LOG will show JUN18, mydate is still a numeric holding a SAS date value;
mydate_str = put (mydate, yymmN.);
* put returns the formatted value using yymmN representation of the data value;
* yymmN format is different than monyy format associated with the variable,
* and thus this is the 'conversion';
put mydate_str=;
* the LOG will show 201806, mydate_str is a $6 variable and can not be used in date value computations;
run;
VVALUE
Функция может использоваться для получения отформатированного значения (представление значения данных в символьной строке) переменной с использованием ее текущего атрибута формата.
length my_date_formatted_str $10;
mydate_formatted_str = vvalue(mydate);
put mydate_formatted_str=;
Вам нужно переключить свои форматы и информацию. В функции INPUT вы указываете формат, в котором ваши данные выглядят, в данном случае, monyy5, а затем формат - это то, как вы хотите, чтобы ваши данные выглядели, в данном случае, YYMMN6.
Переключение их - все, что вам нужно.
data date;
length b $6;
b='Jun18';
new_b=input(b, monyy5.);
format new_b yymmn6.;
run;