0

早上好,

SAS 中的一个程序即将在许多表中以字母数字值(例如:14-Jan-2013 07:00:00.479)选择/合并/排序日期/时间并创建一个表。该程序使用指令“format E8601”和“format type $10.; informat type $10.;”之后的几行,将日期转换为数值(例如:2013-01-14T07:02:03.647)。当此表在 Excel 2007 中导出时,该值变为“ ”,并且不能以传统的日期/时间格式进行修改。

怎么做 ?是否有任何其他格式(而不是 E8601)可用于将日期保存为文本或字母数字值?

谢谢你的帮助。

4

1 回答 1

1

SAS 日期时间值在内部表示为等于自 1960 年 1 月 1 日以来的秒数的浮点值。 FORMATS用于控制这些数值如何在外部表示。例如,考虑一下:

data have;
  myDateTime1 = '14-Jan-2013 07:00:00.479'dt;
  myDateTime2 = '14-Jan-2013 07:00:00.479'dt;
  myDateTime3 = '14-Jan-2013 07:00:00.479'dt;

  format myDateTime2 datetime23.3
         myDateTime3 E8601DT23.3;

  put myDateTime1= 'as a number'
    / myDateTime2= 'as a normal SAS datetime'
    / myDateTime3= 'as an ISO 8601 datetime'
   ;
run;

运行时,这会显示在 SAS 日志中:

myDateTime1=1673766000.5 as a number
myDateTime2=14JAN2013:07:00:00.479 as a normal SAS datetime
myDateTime3=2013-01-14T07:00:00.479 as an ISO 8601 datetime

请注意,这三个myDateTime变量具有相同的值,但根据format指定的值显示不同。

假设您已获得 SAS Access to PC File Formats 许可,您可以使用它PROC EXPORT来创建 Excel 工作簿:

proc export data=have
     outfile='c:\temp\test_dates.xlsx'
     replace;
run;

Excel 工作簿中格式化为“日期时间”值的两个变量的数据值将正确显示为 Excel 列。但是,Excel 中的默认格式仅显示“日期”部分;要在 Excel 中显示完整值,您需要更改 Excel 列格式。

于 2013-04-16T15:49:36.797 回答