Преобразование идентично тому, на которое я ответил на ваш другой вопрос.
Нет необходимости для извлечения числовых аспектов в строке с предполагаемой конструкцией d<mm><dd>
для подачи в MDY
. Вместо этого конкретизируйте строковое представление даты и используйте input
с информатором даты, чтобы установить значение даты SAS (которое представляет собой просто число, представляющее количество дней с даты SAS, то есть 01JAN1960). Значения даты SAS отображаются в соответствии с форматом. Если оставить неформатированным, вы увидите только целое число. Форматирование переменной как date9.
приведет к тому, что вывод отобразит соответствующий <dd><mon><yyyy>
или формат yymmdd10.
, который будет отображаться как <yyyy>-<mm>-<dd>
date_value = input (cats(year(today()), substr(date,2)), yymmdd10.);
format date_value date9.;
или более явно
year_string = cats(year(today());
mmdd_string = substr(date,2);
yyyymmdd_string = cats(year_string,mmdd_string);
date_value = input(yyyymmdd_string, yymmdd10.);
format date_value date9.;
Если вам абсолютно необходимо (маловероятно) сохранить дату, представленную в виде строки, обратно в исходную переменную даты, вам придется использовать put
, чтобы вызвать рендеринг во время присвоения значения.
date = put(date_value, date9.);