Текущее время (вызова функции)
Вы можете создать 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";
person
Lukas Eder
schedule
27.12.2015