2

我正在优化我们拥有的一些使用 UniObjects 的 UniVerse 数据访问代码。经过一些实验,似乎使用 UniSession.OConv 调用来解析某些东西,例如十进制数(大多数我们有 MR4 或 MR2 或 MR2$)和日期(几乎都是 D2/)非常慢(我认为它可能回调服务器以解析它)。

我已经为 MR*[$] 代码构建了一个解析器,但我想知道它们存储的日期,所以我可以为 D2/构建一个解析器。通常它们似乎存储为 5 位数字。我认为这可能是自我们的 UniVerse 服务器在 HP-UX 上运行以来的 Unix 纪元以来的天数,但是在找到“15766”作为最后修改日期并将其乘以 86400(每天的秒数)之后,我得到了 2013 年 3 月 2 日这作为最后修改日期没有意义,因为据我所知,这仍然是在未来。

有谁知道这些日期数字的时基是什么?

4

3 回答 3

5

它存储为天数。只需在 0 上进行转换,您将获得开始日期。

编辑:

正如 Los 所指出的,UniVerse(和 UniData)中使用的 Epoch 是31st Dec 1967

于 2012-10-31T23:19:48.667 回答
2

在 Universe 和任何其他 Pick 数据库中,日期和时间存储为单独的值。

内部日期是 1967 年 12 月 31 日之前和之后的天数,即第 0 天。

内部时间是午夜后的秒数。它可以存储为小数,但通常不是。

于 2015-11-17T22:39:50.633 回答
0

在 TCL 中有一个CDT命令(代表转换日期)将日期从人类可读转换为数字,反之亦然:

CDT 9/28/2017 
 * Result: 18169  

CDT 18169     
 * Result: 09/28/2017     
于 2017-09-28T15:38:47.697 回答