SAS - 日期和时间

IN SAS 日期是数值的一种特殊情况。 从 1960 年 1 月 1 日开始,每一天都被分配一个特定的数值。这个日期被分配日期值 0,下一个日期的日期值是 1,依此类推。 到此日期的前几天由 -1 、 -2 等表示。 使用这种方法,SAS 可以表示未来的任何日期和过去的任何日期。

当 SAS 从源读取数据时,它将读取的数据转换为指定日期格式的特定日期格式。 使用所需的正确信息声明存储日期值的变量。 使用输出数据格式显示输出日期。

SAS 日期信息

可以使用如下所示的特定日期信息正确读取源数据。 信息末尾的数字表示要使用该信息完整读取的日期字符串的最小宽度。 较小的宽度会给出不正确的结果。对于 SAS V9,有一个通用的日期格式 anydtdte15. 可以处理任何日期输入。

输入日期 日期宽度 信息
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.

示例

下面的代码显示了不同日期格式的读取。 请注意,所有输出值都只是数字,因为我们没有对输出值应用任何格式声明。

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