2017-04-05 408 views
0

日付の値を含む列があります。したがって、数値としてインポートすると、20668、20669 ...などが表示されます。しかし、yymmddn8としてフォーマットすると、20160802などが表示されます。しかし、実際には、20160802を示す数値変数が必要です。私は日、月、年を取得し、それらを連結しようとしました。残念ながら、月と日が1桁の場合、201682だけが表示されます。私の目標を達成する最も速い方法は何でしょうか。私は、日と月の変数をテキストに変え、日または月が10未満の場合は0を追加することができます。しかし、これはエレガントで効率的ではありません。助けてください。 おかげSAS:日付を数値に変換する

+0

私の質問はなぜ値を変更したいのですか?日付をそのまま使用すると、関連するすべての日付機能を利用できます。そのように表示する場合は、フォーマットはそのために設計されています – Longfish

+1

詳細を説明する必要があります。何を入力していますか?なぜこれを「数値」の「20160802」にしたいのですか?どこに行くのですか(他のdbms?)あなたの質問はあなたが何かをする方法を尋ねているように聞こえますが、非常に特殊な状況を除いては何もしてはいけませんが、何かを誤解しているかもしれません。 – Joe

答えて

1

あなたはちょうどその形式を中心にinputをラップすることができます:あなたはそれを表示するよう

data test; 
    date = 20668; 
    full_date = input(put(date,yymmddn8.),best12.); 
run; 

putはフォーマットで文字に日付を変換している、とbest12.形式でinput変換されますその形式の数値に戻ります。

+0

これは完全に機能します。ありがとうございます – duckman

+0

問題ありません。私はこれらの他のユーザーには同意しますが、変数がネイティブに数値であり、あなたが望む視覚的な出力を得るために何らかの形でそれをフォーマットすることができれば、奇妙な操作のように思えます。 – Foxer

1

変数にフォーマットを付ける必要があるようです。

format date yymmddn8. ; 

このプログラムを実行すると、日付の表示に使用できるさまざまな形式がいくつか表示されます。

data _null_; 
    do date = 20668, 20669 ; 
    put (6*date) (=10. =date9. =yymmddn8. =mmddyy10. =ddmmyy10. =yymmdd10.) ; 
    end; 
run; 
+0

ありがとうございます。私もそれらを試みたが、私が探していたものは数値変数である。 @フォクサーの答えは上の作品です。 – duckman

+0

???日付は数値変数です。人間に見える数字を日付のように保存したいと言っていますか?だから、01JAN2017を番号20,170,131として保存しますか? – Tom

関連する問題