2013-03-26 1 views

ответ

9

Вам не нужно зиЬзЬг или полосы.

input(monyy,date9.); 
1

Попробуйте

data _null_; 
    monyy = '05May2013'; 
    date = input(substr(strip(monyy),1,9),date9.); 
    put date=date9.; 
    run; 
1

ввод (char_val, date9.);

Вы можете рассмотреть, чтобы преобразовать его в формат слова, используя вход (char_val, worddate.)

Вы можете получить много на этой странице http://v8doc.sas.com/sashtml/lrcon/zenid-63.htm

0
input(char_val,current_date_format); 

Вы можете задать любой формат даты на дисплее время, как набор char_val=date9.;

2

Как было указано выше, простой ответ:

date = input(monyy,date9.); 

с добавлением:

put date=yymmdd.; 

Причина почему это работает, и что вы сделали не так, из-за общего непонимания в SAS. DATE9. является ИНФОРМАЦИОННЫМ. В инструкции INPUT он предоставляет интерпретатору SAS набор команд перевода, которые он может отправить компилятору, чтобы превратить ваш текст в нужные числа, который будет выглядеть как дата, когда будет применен правый FORMAT. FORMAT - это просто видимые представления чисел (или символов). . Таким образом, с помощью ГГММДДА, вы перепутали входную функцию, передав его формат, вместо Informat, и, вероятно, получили полезную ошибку, которая сказала:

Invalid argument to INPUT function at line... etc... 

Который сказал вам абсолютно ничего о том, что делать дальше.

Таким образом, чтобы представить дату вашего персонажа как YYMMDD. В SAS вам нужно:

  1. изменения в информа - date = input(monyy,date9.);
  2. применить формат - put date=YYMMDD10.;
+0

Если вы не можете комментировать не использовать ответ, чтобы сделать это. Получите достаточную репутацию, а затем прокомментируйте. –

+1

@ JonathanDrapeau С другой стороны, это, вероятно, случай, когда он честно является скорее ответом, чем комментарием. –

10

форматы, такие как

date9. 

или

mmddyy10. 

недействительны для команды ввода при преобразовании текста в дату sas. Вы можете использовать

Date = input(cdate , ANYDTDTE11.); 

или

Date = input(cdate , ANYDTDTE10.); 

для преобразования.

+0

У меня была переменная ввода, которая выглядела как «1961-11-20», которую я хотел прочитать как дату. Это решение сработало, а другие - нет. – Underminer

+0

Согласовано, это решение работает лучше для символов даты и времени. –

1

Этот код помогает:

data final; set final; 

first_date = INPUT(compress(char_date),date9.); format first_date date9.; 

run; 

Я лично попробовал его на SAS

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