2015-05-18 163 views
0

我正試圖找到一種檢測日期變量最大值的有效方法。我將每天收到的一個數據警告是,日期記錄爲文本。什麼是檢測SAS中最大變量值的最快方法

我通常會做下列方式:

proc sql noprint ; 
select MAX(MDY(input(SUBSTRN(MyDate, 6, 2),2.), input(SUBSTRN(MyDate, 9, 2),2.), input(SUBSTRN(MyDate, 1, 4),4.))) as max_date FORMAT=date9. 
into :max_date 
from FooData; 
quit; 

在這種情況下,該數據包含超過100m行和運行此代碼每隔幾天似乎比較麻煩。任何人都可以想出更有效的方法來解決這個問題嗎?

+1

您的日期似乎以yyyymmdd10格式存儲,您是否可以確認只有日期存儲在MyDate列中? (即以後沒有其他文字) – Longfish

+0

@Keith。我可以確認此變量中沒有其他文本。 – Herm

回答

3

約YYYYMMDD的好處是,當你解決它作爲一個字符串,它也最終排序爲日期(不像,例如MM/DD/YY)。所以就拿max()

+0

無需將字符變量轉換爲Numeric,只需查找MAX()值閃電般快。謝謝 – Herm

1

通過使用單個信息讀取日期而不是3個子字符串計算,您當然可以簡化select語句。它顯然需要爲每個記錄做到這一點,所以它仍然會減慢速度,但希望不會像目前那樣。

proc sql noprint ; 
select MAX(input(mydate,yymmdd10.)) as max_date FORMAT=date9. 
into :max_date 
from FooData; 
quit; 
相關問題