早上好,
SAS中的一个程序即将在很多表中选择/合并/排序日期/时间的字母数字值(例如:2013年1月14日07:00:00.479)并创建一个表。 该程序使用“格式E8601”指令和“格式类型$ 10。”之后的几行。 信息类型$ 10。;“,什么转换日期的数字值(例如:2013-01-14T07:02:03.647)。 在Excel 2007中导出此表时,该值将变为“”,并且无法以传统的日期/时间格式进行修改。
怎么做?是否有其他格式(而不是E8601)可用于将日期保留为文本或字母数字值?
感谢您的帮助。
答案 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列格式。