我正在优化一些使用UniObjects的UniVerse数据访问代码。经过一些实验后,似乎使用UniSession.OConv调用来解析某些东西,例如十进制数字(大多数我们有一个MR4或MR2或MR2$)和日期(几乎都是D2/)非常慢(我认为它可能会回调到服务器来解析它)。
我已经为MR*$代码构建了一个解析器,但我想知道日期的存储方式,这样我就可以为D2/构建一个解析器。通常,它们似乎被存储为一个5位数字。我想自从我们的UniVerse服务器在HP-UX上运行以来,离Unix时代可能已经有几天了,但是在找到'15766‘作为最后修改日期并乘以86400 (每天秒数)后,我得到的是2013年3月2日,这个日期没有意义,因为据我所知,这仍然是未来的时间。
有人知道这些日期的时间基数是多少吗?
发布于 2012-11-01 07:19:49
它以天数的形式存储。只需对0进行转换,您就会得到开始日期。
编辑:
正如Los所指出的,UniVerse (和UniData)中使用的纪元是1967年12月31日。
发布于 2015-11-18 06:39:51
在宇宙和任何其他Pick数据库中,日期和时间被存储为单独的值。
内部日期是1967年12月31日之前和之后的天数,也就是第0天。
内部时间是午夜后的秒数。它可以存储为小数,但通常不是这样。
发布于 2017-09-28 23:38:48
在TCL中有一个CDT命令(代表转换日期),它将日期从人类可读转换为数字,反之亦然:
CDT 9/28/2017
* Result: 18169
CDT 18169
* Result: 09/28/2017 https://stackoverflow.com/questions/13166696
复制相似问题