SAS中的日期时间格式,无法在Excel 2007中导出

时间:2013-04-16 10:26:28

标签: datetime sas

早上好,

SAS中的一个程序即将在很多表中选择/合并/排序日期/时间的字母数字值(例如:2013年1月14日07:00:00.479)并创建一个表。 该程序使用“格式E8601”指令和“格式类型$ 10。”之后的几行。 信息类型$ 10。;“,什么转换日期的数字值(例如:2013-01-14T07:02:03.647)。 在Excel 2007中导出此表时,该值将变为“”,并且无法以传统的日期/时间格式进行修改。

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

感谢您的帮助。

1 个答案:

答案 0 :(得分: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文件格式的SAS访问权限,您只需使用PROC EXPORT创建Excel工作簿:

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

Excel工作簿中两个变量的数据值,格式为" datetime"值将作为Excel列正确显示。但是,Excel中的默认格式仅显示" date"一部分;要在Excel中显示完整值,您需要更改Excel列格式。