gpt4 book ai didi

timestamp - H2数据库中的当前时刻

转载 作者:行者123 更新时间:2023-12-05 02:21:26 31 4
gpt4 key购买 nike

如何获取H2数据库中的实际当前时钟时间,当前时刻?

CURRENT_TIMESTAMP函数给出当前数据库事务开始的时刻。有没有办法获取当前时刻,当前语句执行的时间?这可能与 CURRENT_TIMESTAMP 相同或晚于。

为了比较,在 Postgres 中, current_timestamp 等一些函数返回事务开始时间,而一些函数如 clock_timestamp返回实际的当前时钟时间。

最佳答案

当前时间(函数调用时)

你可以创建一个 ALIAS对于 System.currentTimeMillis():

CREATE ALIAS CURRENT_TIME_MILLIS FOR "java.lang.System.currentTimeMillis";

这不会生成语句执行开始的时间戳,但实际上是当前时间戳,每当 H2 实际调用该函数时 - 即非确定性时刻,并且可能是不同行的不同值在同一个语句中。

但也许,这足以满足您的要求。

当前时间(语句执行时间)

如果上述非确定性解决方案对您来说不够精确,另一种选择是实现一个拦截所有语句的 JDBC 包装器,将当前时间设置为本地某个线程(H2 不支持 Connection. getClientInfo():

threadlocal.set(new Timestamp(System.currentTimeMillis()).toString());

...然后从 ALIAS 中读取客户端信息,如下所示:

public static Timestamp statementTime() throws SQLException {
return Timestamp.valueOf(threadlocal.get());
}

然后:

CREATE ALIAS STATEMENT_TIME FOR "com.example.statementTime";

关于timestamp - H2数据库中的当前时刻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34478259/

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