4

SAS のまったくの初心者として、私はすぐに日付の書式設定に関する問題に遭遇しました。

BUSDATE、SPOTDATE、MATURITY の 3 種類の日付を持つトランザクションを含むデータセットがあります。各トランザクションは 2 行で表され、1 行目から BUSDATE と SPOTDATE が必要ですが、2 行目から MATURITY が必要です。

元のセットでは、日付は YYYY-MM-DD 形式です。

DATA masterdata;
SET sourcedata(rename(BUSDATE=BUSDATE2 SPOTDATE=SPOTDATE2 MATURITY=MATURITY2));

BUSDATE=BUSDATE2;
SPOTDATE=SPOTDATE2;

IF TRANS_TYPE='Swap' THEN;
MATURITY=SPOTDATE;

RUN;

問題は、これが 17169 のような値を返すことです (これは特定の日付からの日数だと思います)。

YYYY-MM-DD 形式で出力するにはどうすればよいですか。または、このアプローチは間違っています。最初に日付変数を SAS 日付形式に変換する必要がありますか?

4

2 に答える 2

6

CarolinaJay の回答に加えて、数値形式 (「日付 X からの日数」など) を計算できるため、通常は数値形式として保持する必要があります。ただし、何らかの理由で文字変数が必要な場合は、次のようにすることができます。

date_As_char=put(datevar,YYMMDD10.);

ちなみに、YYMMDD10 は実際には、あなたが要求したとおりに YYYY-MM-DD を返します。別のセパレータが必要な場合は、http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000589916.htm (YYMMDDxw. format) を参照してください - 文字を入れる場合最後の D の後、特定の文字については、別の区切り文字が表示されます。YYMMDDn10のように。セパレーターなし、または YYMMDDs10 を提供します。スラッシュを与えます。YYMMDDd10. 文字を省略するのと同じように、ダッシュが表示されます。この概念は MMDDYY 形式にも適用され、他にもいくつかあると思います。

于 2013-04-14T04:42:21.460 に答える