Преобразование даты в строку в шаге данных 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;
Другие вопросы по тегам