2017-02-02 24 views
0

シンボリックデータをデータ形式に変換するスクリプトを作成する必要があります。私は28.01.2017 09:23:14のような文字列を含むカラムdateのテーブルを持っています。私はそれらを日付形式28.23.2017に変換する必要があります。 私が試した:文字列 'dd.mm.yyyy hh:mm:ss'をSASの日付形式 'dd.mm.yyyy'に変換します

data SMS_STAT; 
    set SMS_STAT; 
    date = input(date, DDMMYY9.); 
    put date = DDMMYY9.; 
run; 

はまた、私はdateputで切り抜いたフォーマットを試してみましたが、それは助けにはならなかった。それは私が今28.01.201728.01.2017 09:23:14をsubstringedいる.

に変換し、私がしたいですそこから日付を作りなさい。

+1

あなたは構文の問題を抱えています。 1)それらの後ろ引用符は問題を引き起こすでしょう2)INPUT関数への引数2の形式はDDYYMM9としてドットを必要とします。 –

+0

こんにちはウラジスラフ。問題の内容を明確にしてください。スクリプトですか?私は捕まえられない。また、http://stackoverflow.com/help/how-to-askも参照してください。 –

+0

@VitaliyProはい、これはスクリプトです –

答えて

3

DATEという名前の文字変数を持つデータセットを、28.01.2017 09:23:14のような値で作成しましょう。

data have ; 
    date='28.01.2017 09:23:14'; 
run; 

日付部分を文字列として残したい場合は、SCAN()またはSUBSTR()関数を使用します。

data want; 
    set have ; 
    date = scan(date,1,' '); 
run; 

実際の日付変数を作成する場合、日付には文字変数の代わりに数値変数が必要なので、新しい変数を作成する必要があります。 INPUT()関数を使用すると、現在の文字列を日付に読み取ることができます。 SASにデータを表示させたいフォーマットを任意の形式で添付できます。

data want ; 
    set have ; 
    date2 = input(scan(date,1,' '),ddmmyy10.); 
    format date2 mmddyyp10. ; 
run; 

あなただけの、おそらくそれだけでSUBSTR()関数を使用することも簡単である文字列としてそれを残し、日と月のフィールドを逆にしたい場合。

data want ; 
    set have ; 
    substr(date,1,5) = substr(date,4,2)||'.'||substr(date,1,2) ; 
run; 
0

は実際には、finaly、私はこのソリューションに来た:

dates = substr(date, 1, 10); 
d=input(dates,DDMMYY10.); 
format d DATE9.; 
+0

最終結果が 'date9.'または' mmddyyp10.'として表示されますか?私はあなたが後者を探しているのではないかと思います。たぶん一貫性のために2つのうちの1つを編集しますか?ありがとう... – Snorex

関連する問題