SAS – 日期和时间
SAS – 日期和时间
IN SAS 日期是数值的特殊情况。从 1960 年 1 月 1 日开始,每一天都被分配了一个特定的数值。这个日期被分配了日期值 0,下一个日期的日期值是 1,依此类推。到此日期的前几天由 -1 、 -2 等表示。通过这种方法,SAS 可以表示未来的任何日期和过去的任何日期。
当 SAS 从源读取数据时,它会将读取的数据转换为指定日期格式的特定日期格式。使用所需的正确信息声明存储日期值的变量。使用输出数据格式显示输出日期。
SAS 日期信息
通过使用特定的日期信息可以正确读取源数据,如下所示。informat 末尾的数字表示使用 informat 完整读取的日期字符串的最小宽度。较小的宽度会产生错误的结果。对于 SAS V9,有一个通用日期格式anydtdte15。它可以处理任何日期输入。
Input Date | 日期宽度 | 信息 |
---|---|---|
03/11/2014 | 10 | mmddyy10. |
03/11/14 | 8 | mmddyy8. |
December 11, 2012 | 20 | worddate20. |
14mar2011 | 9 | 日期 9. |
14-mar-2011 | 11 | 日期 11. |
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;
执行上述代码后,我们得到以下输出。
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;
执行上述代码后,我们得到以下输出。