gpt4 book ai didi

java - 如何从 Vax 64 位纪元表示相应的日期和时间(小数点后 9 位)

转载 作者:行者123 更新时间:2023-11-30 07:42:47 25 4
gpt4 key购买 nike

当前的问题如下: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 函数如下:

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 数据类型等效(自 Java 8 起)是 long。它是否正确?

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

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

最佳答案

也许这会起作用:

insert into <your_table> values( timestamp '1970-01-01 00:00:00 GMT' +
numtodsinterval(<your unix value>/1000, 'SECOND') )

关于java - 如何从 Vax 64 位纪元表示相应的日期和时间(小数点后 9 位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com