在数字格式上读取sas xpt文件的问题

时间:2013-02-21 10:47:09

标签: sas

我们读取SAS xpt文件以在.net中加载数据。一切正常但最近我们遇到了一个问题,即客户将日期作为数值存储在列中,并在文件头中提供了格式。 SAS查看器可以使用给定的格式正确显示数据,但我们必须在我们的程序中将.net中的数据加载到我们不需要SAS。

我最近发现你可以使用带有OLEDB的SaS LocalProvider,但事实证明它不支持数字格式化。因此,我们最终会在列中存储错误的数据,其中数据存储为数值,并为其提供格式。

任何人都可以通过一些代码示例帮助我理解并解决问题。我在.Net中查找了代码示例,但到目前为止这个问题没有运气。

提前致谢。

此致

纳西尔

1 个答案:

答案 0 :(得分:1)

SAS日期值存储为自1960年1月1日以来的天数。

122
123  data _null_;
124  x=today();
125  put x=;
126  run;

x=19410

今天(2013年2月21日)是自1960年1月1日以来的19410天。假设您知道自己软件的日期格式(可能是其他日期以来的某些天数),您可以自行执行转换。

如果相关,则SAS日期时间值为自1/1/1960 00:00:00以来的秒数。

128  data _null_;
129  x=datetime();
130  put x=;
131  run;

x=1677052885.5
NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.00 seconds

再次,那是截至2013年2月21日08:00的时间。