2017-07-27 55 views
0

我試圖根據日期篩選器篩選數據。我表中的日期列在date9中。格式(30JUN2017)。要根據最大日期值減去6個月篩選銷售額

我想通過從現有日期減去6個月來過濾日期列,這將是31DEC2017。

e.g:日期< 31DEC2017

能就如何做到這一點,我一直在使用的INTx功能等選項,以及試圖無論如何建議。

感謝您的幫助。

+0

您可以減去一個日期從另一個直接得到他們之間的天數,並比較這180天(大約六個月)。如果要在代碼中嵌入文字日期,請使用「31dec2017」。你試過了什麼(精確),你得到了什麼結果,爲什麼你認爲結果是錯誤/不滿意的? –

+0

'intnx'是這裏使用的標準函數。當你嘗試使用它時什麼都不起作用?附:從2017年6月30日起的6個月是31DEC2016,而不是2017年 – Longfish

回答

0

當使用它們格式化值SAS處理日期,你應該將它們括在""d

問候, AJ,即在你的榜樣應該是where date<"31DEC2017"d。如果您的日期以日期9格式存儲爲字符串,則可以將其設置爲如下所示的日期: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; 
相關問題