2016-12-19 234 views
0

我有數據集,日期以ddMonyy格式存儲爲字符串。 19Dec16。SAS將字符串存儲日期轉換爲DDMonYY(date7。)到SAS日期

使用date7轉換字符串時。信息到SAS日期,有些年份被解釋爲19yy和一些20yy。

這是今天的樣品代碼

data strDates; 
infile cards; 
input StringDate $; 
cards; 
31Dec99 
01Jan00 
19Dec16 
31Dec25 
01Jan26 
; 
run; 
data convertTest; 
set strDates; 
format Date date9.; 
Date=input(StringDate,date7.); 
run; 

運行代碼(2016年12月19日)將產生以下結果

strDate date 
31Dec99 31DEC1999 
01Jan00 01JAN2000 
19Dec16 19DEC2016 
31Dec25 31DEC2025 
01jan26 01JAN1926 

01Jan00和31Dec25之間日期被分配給年2000至2025年,而日期從01年1月26日到31日被視爲1926年至1999年

問題:

如何確定2000年或1900年是否要添加到年份?我懷疑它依賴於運行時間(運行代碼的日曆年)?但我無法在SAS文檔中找到對此的任何參考。

回答

2

有一個選項,YEARCUTOFF,根據您的系統和版本可能有20或26的值。有關更改的更多信息,請參見KB note 46368

這聽起來像你正在使用SAS 9.4,這意味着默認值是26:0-25的任何值都是'20xx',而26-99的任何值都是'19xx'。如果該值對您的數據不起作用,您可以更改YEARCUTOFF選項(或者,自己構建4位數年份)。

+0

謝謝@Joe,這正是我正在尋找 – kristof