2014-12-10 3 views
0

Есть ли более быстрый/короткий путь для преобразования даты символов в другой формат даты символов без использования промежуточного заявления ввода, как это делалось здесь ниже ...Можно ли преобразовать дату символа в другой формат даты символа без использования инструкции ввода ... возможно?

data alpha; 
length date $12; 
input date $; 
cards; 
15FEB2014 
; 
run; 

data beta;set alpha; 
date_f=put(input(date,date9.),yymmdd10.); 
run; 

Дата Характер: 15FEB2014 -> Дата Характер: 2014- 02-15

Благодаря

sas_kappel

+0

Ошибка в заголовке следует понимать как «формат даты другого символа» ... –

+2

Реальный вопрос: зачем вам это нужно? (Серьезный вопрос) –

+0

Во-вторых, комментарий Роберта, если вы объяснили, почему может быть показано альтернативное решение. – Reeza

ответ

1

конечно, это возможно, но это, вероятно, будет проще нет.

data alpha; 
    length date $12; 
    input date $; 
cards; 
15FEB2014 
; 
run; 

data beta;set alpha; 
    date_f=put(input(date,date9.),yymmdd10.); 
    format date_f2 $10.; 
    array monnames[12] $ _temporary_ ("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC") ; 
    date_f2 = catx('-',substr(date,6,4),put(whichc(substr(date,3,3),of monnames[*]),z2.),substr(date,1,2)); 
run; 

Я не могу придумать более простой способ, чем без обмана, чем я уже в этом. Метод put(input()) выполняет большую работу за небольшим количеством кода.

Вы также можете написать формат прямого символа, который преобразует '01JAN2014' в '2014-01-01', но вам нужно будет писать каждое возможное преобразование по одному, если я не пропущу что-то очевидное.

+0

Интересный код. Я понимаю, что метод put (input()), возможно, самый простой способ достичь моей цели. Процедура форматирования будет работать для условия, если у вас есть очень ограниченное количество различных значений для преобразования. –

Смежные вопросы