jOOQ 获取的时间戳没有纳秒
jOOQ fetched timestamp has no nanoseconds
在 postgres 数据库中,使用 jOOQ,当我获取具有定义为
的列的行时
timestamp without time zone
当我执行 select 并获得值(由 jOOQ 获取到 java.sql.Timestamp
)时,我发现纳秒丢失了。
例如,在我的数据库中:
2016-04-04 15:14:10.970048
但 jOOQ returns 具有值
的时间戳
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 来解决此问题。
在 postgres 数据库中,使用 jOOQ,当我获取具有定义为
的列的行时timestamp without time zone
当我执行 select 并获得值(由 jOOQ 获取到 java.sql.Timestamp
)时,我发现纳秒丢失了。
例如,在我的数据库中:
2016-04-04 15:14:10.970048
但 jOOQ returns 具有值
的时间戳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 来解决此问题。