0

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

我最近发现您可以将 SaS LocalProvider 与 OLEDB 一起使用,但事实证明它不支持数字格式。所以我们最终会在列中得到错误的数据,其中数据存储为具有为其提供格式的数值。

任何人都可以通过一些代码示例帮助我理解和解决问题。我在 .Net 中四处寻找代码示例,但到目前为止还没有解决这个问题。

提前致谢。

问候,

纳西尔

4

1 回答 1

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 日期时间值是 # of seconds since 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 的时间。

于 2013-02-21T14:00:46.733 回答