SAS - 日期與時間



在 SAS 中,日期是數值的一種特殊情況。從 1960 年 1 月 1 日開始,每一天都被分配一個特定的數值。這個日期的值為 0,下一個日期的值為 1,以此類推。此日期之前的日期用 -1、-2 等表示。透過這種方法,SAS 可以表示過去和未來的任何日期。

當 SAS 從資料來源讀取資料時,它會根據指定的日期格式將讀取的資料轉換為特定的日期格式。儲存日期值的變數需要宣告所需的正確輸入格式。輸出日期使用輸出日期格式顯示。

SAS 日期輸入格式

可以使用如下所示的特定日期輸入格式正確讀取源資料。輸入格式末尾的數字表示使用輸入格式完全讀取日期字串的最小寬度。較小的寬度將導致錯誤的結果。在 SAS V9 中,有一個通用的日期格式 **anydtdte15.** 可以處理任何日期輸入。

輸入日期 日期寬度 輸入格式
03/11/2014 10 mmddyy10.
03/11/14 8 mmddyy8.
2012 年 12 月 11 日 20 worddate20.
14mar2011 9 date9.
14-mar-2011 11 date11.
14-mar-2011 15 anydtdte15.

示例

以下程式碼顯示了讀取不同日期格式的方法。請注意,由於我們沒有對輸出值應用任何格式語句,因此所有輸出值都只是數字。

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;

執行上述程式碼後,將獲得以下輸出。

date_time_1

SAS 日期輸出格式

讀取日期後,可以根據顯示需要將其轉換為其他格式。這是透過使用日期型別的格式語句實現的。它們採用與輸入格式相同的格式。

示例

在下面的示例中,日期以一種格式讀取,但以另一種格式顯示。

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;

執行上述程式碼後,將獲得以下輸出。

date_time_2
廣告