首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何表示Vax 64位纪元对应的日期和时间(十进制右边9位)

如何表示Vax 64位纪元对应的日期和时间(十进制右边9位)
EN

Stack Overflow用户
提问于 2015-12-23 07:40:46
回答 1查看 87关注 0票数 1

手头的问题如下: 1)从已经建立TCP/IP套接字连接的硬件接收Vax VMS 64位纪元时间,2)将Unix等效纪元时间存储到oracle数据库表中,3)允许用户在GUI上查询和显示这样的时间,使得日期格式是MM/DD/YYYY,并且时间格式是小数点右边有9位数字(如17:30:30.123456789)。

我已经成功地编写了代码,以建立到硬件的TCP/IP套接字连接并处理接收到的数据。

在互联网上搜索时,我发现了一篇文章,解释了如何将Vax VMS 64位纪元时间转换为Unix纪元时间。本文中的C函数如下:

代码语言:javascript
复制
void timevmstounix( long long *vmstimein, time_t *epochout )
{
    long long timevalue = *vmstimein;

    timevalue -= 0x07c95674beb4000ull;
    timevalue /= 10000000;
    *epochout = (time_t) timevalue;

    return;
}

通过额外的互联网研究,我的理解是,对应于long long和time_t C数据类型的Java数据类型(从Java8开始)是一个long。这是正确的吗?

我定义并构建了一个oracle数据库表,其中包含类型为timestamp(9)的列,以便能够检索小数点右侧9位数字的时间。

我遇到的最大的问题/困惑是,我如何将生成的Unix纪元时间存储在这个Oracle数据库列中,以便稍后当用户对相关的数据库表执行查询时,我可以用to_char(column_name,'MM/DD/YYYY HH24:MI:SS.sssssssss')查询这个列的内容,并以正确的所需格式显示它。感谢您能提供的任何帮助/建议/更正。

EN

回答 1

Stack Overflow用户

发布于 2015-12-23 08:28:41

也许这能行得通:

代码语言:javascript
复制
insert into <your_table> values( timestamp '1970-01-01 00:00:00 GMT' +
   numtodsinterval(<your unix value>/1000, 'SECOND') )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34426319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档