具有 DB2 模式的 H2 无法识别关键字 'minute'

H2 with DB2 mode does not recognize keyword 'minute'

我有一个包含多个集成测试的项目。为了提高这些测试的速度,我决定在 运行 时使用 H2 数据库。但我仍然希望我的 applciation 运行 使用 DB2。

我在 DB2 模式下将 H2 指定为 运行 :

url: "jdbc:h2:mem:TEST;\
      MODE=DB2;\
      DB_CLOSE_DELAY=-1;\
      DB_CLOSE_ON_EXIT=FALSE;\
      INIT=CREATE SCHEMA IF NOT EXISTS SYSIBM\;\
      CREATE TABLE IF NOT EXISTS SYSIBM.SYSDUMMY1()"

当我执行此请求时,我的一个测试不起作用:

update batch set running=current timestamp where id=? and (running is null or running < current timestamp + 1 minute)

我收到此错误消息:

ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Syntax error in SQL statement "UPDATE BATCH SET RUNNING=CURRENT TIMESTAMP WHERE ID=?  AND (RUNNING IS NULL OR RUNNING < CURRENT TIMESTAMP + 1 MINUTE[*]) "; expected "[, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, REGEXP, IS, IN, BETWEEN, AND, OR, ,, )";

似乎无法识别 MINUTE。谁能帮我 ?

您是否尝试过使用 TIMESTAMPDIFF() 来比较 runningCURRENT_TIMESTAMP? H2 和 DB2 似乎都支持该功能。