在SAS中日期有一種特殊的計(jì)算方式,以1960年1月1日為中心點(diǎn)進(jìn)行計(jì)算,該日期為0,下一個(gè)日期的日期為1,以此類(lèi)推。該日期之前的日期則為負(fù)數(shù)-1,-2等表示。使用這種方法,SAS可以表示未來(lái)的任何日期和過(guò)去的任何日期。
當(dāng)SAS從源讀取數(shù)據(jù)時(shí),它將讀取的數(shù)據(jù)轉(zhuǎn)換為指定日期格式的特定日期格式。 用于存儲(chǔ)日期值的變量使用所需的正確informat來(lái)聲明。 輸出日期通過(guò)使用輸出數(shù)據(jù)格式顯示。
可以使用特定的日期信息正確讀取源數(shù)據(jù),如下所示。 信息末尾的數(shù)字表示使用信息完全讀取的日期字符串的最小寬度。 較小的寬度將給出不正確的結(jié)果。 使用SAS V9,有一個(gè)通用的日期格式anydtdte15。 它可以處理任何日期輸入。
輸入日期 | 日期寬度 | INFORMAT |
---|---|---|
03/11/2014 | 10 | mmddyy10。 |
03/11/14 | 8 | mmddyy8。 |
December 11, 2012 | 20 | worddate20。 |
14mar2011 | 9 | date9。 |
14-mar-2011 | 11 | date11。 |
14-mar-2011 | 15 | anydtdte15。 |
下面的代碼顯示了不同日期格式的讀取。 請(qǐng)注意,所有的輸出值只是數(shù)字,因?yàn)槲覀儧](méi)有對(duì)輸出值應(yīng)用任何格式語(yǔ)句。
DATA TEMP; INPUT @1 Date1 date11. @12 Date2 anydtdte15. @23 Date3 mmddyy10. ; DATALINES; 02-mar-2012 3/02/2012 3/02/2012 ; PROC PRINT DATA=TEMP; RUN;
當(dāng)執(zhí)行上面的代碼,我們可以得到下面的輸出。
讀取后的日期可以根據(jù)顯示器的要求轉(zhuǎn)換為其他格式。 這是使用日期類(lèi)型的格式語(yǔ)句實(shí)現(xiàn)的。 它們采用與informats相同的格式。
在下面的示例中,日期以一種格式讀取,但以另一種格式顯示。
DATA TEMP; INPUT @1 DOJ1 mmddyy10. @12 DOJ2 mmddyy10. ; format DOJ1 date11. DOJ2 worddate20. ; DATALINES; 01/12/2012 02/11/1998 ; PROC PRINT DATA=TEMP; RUN;
當(dāng)執(zhí)行上面的代碼,我們可以得到下面的輸出。
更多建議: