如何获取H2数据库中实际的当前时钟时间,当前时刻?
The CURRENT_TIMESTAMP http://h2database.com/html/functions.html#current_timestamp函数给出当前数据库事务开始的时刻。有没有办法获得当前时刻,当前语句执行的时间?这可能与以下时间相同或晚于CURRENT_TIMESTAMP
.
为了比较,在,一些函数例如current_timestamp
返回交易开始时间,而某些函数如clock_timestamp http://www.postgresql.org/docs/current/static/functions-datetime.html返回实际的当前时钟时间。
当前时间(函数调用的)
你可以创建一个 for System.currentTimeMillis()
:
CREATE ALIAS CURRENT_TIME_MILLIS FOR "java.lang.System.currentTimeMillis";
这不会生成语句执行开始的时间戳,但实际上current时间戳,每当 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";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)