web-dev-qa-db-ja.com

SASで文字列を日付値に変換する方法は?

SASで文字列を日付に変換したいのですが、試しました:

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

しかし、それはうまくいきませんでした。これはできますか?

6
SAS_learner

Substrやstripは必要ありません。

input(monyy,date9.);
9
data _null_

のようなフォーマット

date9. 

または

mmddyy10. 

テキストをsas日付に変換する際の入力コマンドには無効です。使用できます

Date = input( cdate , ANYDTDTE11.);

または

Date = input( cdate , ANYDTDTE10.); 

変換用。

13
Mitul

上記のように、簡単な答えは次のとおりです。

_date = input(monyy,date9.);
_

以下を追加します:

_put date=yymmdd.;
_

whyこれが機能する理由、およびあなたが機能しなかった理由は、SASにおける一般的な誤解が原因です。日付9。 INFORMATです。 INPUTステートメントでは、SASインタープリターに一連の変換コマンドを提供し、コンパイラーに送信して、テキストを正しい数値に変換します。これは、正しい場合は日付のように見えます。 FORMATが適用されます。FORMATは、数値(または文字)の表示にすぎません。したがって、YYMMDDを使用すると、INPUT関数ではなくINFORMATではなくFORMATを渡すことによってINPUT関数が混乱し、おそらく次のような有用なエラーが表示されます。

_Invalid argument to INPUT function at line... etc...
_

これはあなたに次に何をすべきかについて全く何も言わなかった。

要約すると、キャラクターの日付をYYMMDDとして表すためです。 SASでは、

  1. iNFORMATを変更する-date = input(monyy,date9.);
  2. fORMATを適用する-_put date=YYMMDD10.;_
3
user3420862

試す

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

このコードは次のことに役立ちます。

data final; set final;

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

run;

私は個人的にSASで試してみました

1

input(char_val、date9。);

Input(char_val、worddate)を使用してWord形式に変換することを検討できます。

あなたはこのページでたくさん得ることができます http://v8doc.sas.com/sashtml/lrcon/zenid-63.htm

1
Santhosh
input(char_val,current_date_format);

Set char_val=date9.;のように、表示時に任意の日付形式を指定できます。

0
Arun Patil