gpt4 book ai didi

java - jOOQ 获取的时间戳没有纳秒

转载 作者:行者123 更新时间:2023-11-29 12:19:10 26 4
gpt4 key购买 nike

在 postgres 数据库中,使用 jOOQ,当我获取具有定义为列的行时

timestamp without time zone

当我进行选择并获得值(由 jOOQ 获取到 java.sql.Timestamp)时,我发现纳秒丢失了。

例如,在我的数据库中:

2016-04-04 15:14:10.970048

但是 jOOQ 返回一个带有值的时间戳

2016-04-04 15:14:10.0

这是进一步比较的问题。我怎样才能避免这种情况?


更新根据要求,我会提供更多详细信息。

在 Postgresql 中我有一个类型:

CREATE TYPE schema.my_type AS
(
mt_page smallint,
mt_active_from timestamp without time zone,
);

我调用一个函数,使用例程:

DSLContext dsl = ....

MyTypeRecord [] records = Routines.myRoutine(dsl.configuration);

那么Timestamp就不会没有nanos了

函数是:

CREATE OR REPLACE FUNCTION shop.myRoutine(
OUT my_types schema.my_type[]
)
RETURNS schema.my_type[] AS
$BODY$
DECLARE
BEGIN
BEGIN

SELECT ARRAY(
SELECT
ROW(a_id, a_timestamp)::schema.my_type
FROM schema.article
) INTO my_types;
END;
RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE SECURITY DEFINER
COST 1000;

最佳答案

这是 jOOQ 中的错误:https://github.com/jOOQ/jOOQ/issues/5193

jOOQ 内部实现了复合类型反序列化算法,不幸的是,PostgreSQL 的 JDBC 驱动程序没有实现 SQLData 和相关 API 以提供开箱即用的复合类型支持。当前的实现 (jOOQ 3.7.3) 解析没有小数秒部分的时间戳。

作为解决方法,您可以实现自己的 data type binding解决此问题。

关于java - jOOQ 获取的时间戳没有纳秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36413530/

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