SAS - 日期和时间


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

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

SAS 日期信息

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

输入日期 日期宽度 信息
2014年3月11日 10 mmddyy10。
2014年3月11日 8 嗯ddyy8。
2012 年 12 月 11 日 20 字日期20。
2011年3月14日 9 日期 9.
2011年3月14日 11 日期11。
2011年3月14日 15 任何dtdte15。

例子

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

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;

当执行上面的代码时,我们得到以下输出。

日期_时间_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;

当执行上面的代码时,我们得到以下输出。

日期_时间_2