0
我試圖根據日期篩選器篩選數據。我表中的日期列在date9中。格式(30JUN2017)。要根據最大日期值減去6個月篩選銷售額
我想通過從現有日期減去6個月來過濾日期列,這將是31DEC2017。
e.g:日期< 31DEC2017
能就如何做到這一點,我一直在使用的INTx功能等選項,以及試圖無論如何建議。
感謝您的幫助。
我試圖根據日期篩選器篩選數據。我表中的日期列在date9中。格式(30JUN2017)。要根據最大日期值減去6個月篩選銷售額
我想通過從現有日期減去6個月來過濾日期列,這將是31DEC2017。
e.g:日期< 31DEC2017
能就如何做到這一點,我一直在使用的INTx功能等選項,以及試圖無論如何建議。
感謝您的幫助。
當使用它們格式化值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;
您可以減去一個日期從另一個直接得到他們之間的天數,並比較這180天(大約六個月)。如果要在代碼中嵌入文字日期,請使用「31dec2017」。你試過了什麼(精確),你得到了什麼結果,爲什麼你認爲結果是錯誤/不滿意的? –
'intnx'是這裏使用的標準函數。當你嘗試使用它時什麼都不起作用?附:從2017年6月30日起的6個月是31DEC2016,而不是2017年 – Longfish