2017-07-27 3 views
0

日付フィルタに基づいてデータをフィルタリングしようとしています。私のテーブルの日付の列はdate9です。フォーマット(30JUN2017)。最大日付値から6ヶ月を差し引いた売上をフィルタリングする

私は、既存の日付から6ヶ月を差し引いて31DEC2017になるように日付の列をフィルタリングしたいと考えています。

例えば:日付< 31DEC2017

はとにかくこれを行う方法について提案することができ、私もINTX機能やその他のオプションを使用して試してみました。

ありがとうございました。あなたが""dで囲む必要があります

+0

あなたは1つの日付を引くことができます別の人から直接それらの間の日数を取得し、これを180日間(約6ヶ月)比較します。コードにリテラル日付を埋め込むには '31dec2017'dを使用します。何を試してみましたか(正確に)、結果はどのように得られましたか、なぜ結果が間違っている/不十分であると考えましたか? –

+0

'intnx'はここで使う標準関数です。あなたはそれを使ってみると何がうまくいかなかったのですか? p.s. 30JUN2017から6ヶ月後は2017年ではなく31DEC2016です – Longfish

答えて

0

そのフォーマットされた値を使用して、SASで日付を操作

よろしく、 AJは、すなわち、あなたの例ではそれがwhere date<"31DEC2017"dする必要があります。日付が文字列としてdate9形式で格納されている場合は、次のような日付にすることができます。where input(date,date9.)<"31DEC2017"d

質問がタイトルと多少異なるようです。後者によれば、max_date - 6か月、その最大日付があなたのデータセット内にあるかもしれないものにフィルタをかけたいとします。これには行うことができます。

proc sql; 
    select * 
    from t 
    where intnx('month',date,6)<(select max(date) from t) 
    ; 
quit; 

しかし、いくつかの奇妙な理由で、「最大日付」あなたは、現在の日付を意味することで、上記のクエリは、単にこのなった場合:

proc sql; 
    select * 
    from t 
    where intnx('month',date,6)<date() 
    ; 
quit; 
関連する問題