【问题标题】:How can I set sysdate in H2? (for testing)如何在 H2 中设置 sysdate? (供测试用)
【发布时间】:2023-03-11 12:46:01
【问题描述】:

我使用H2进行测试,我想设置sysdate

我尝试为我自己的实现创建 sysdate 的别名,但后来我无法将它与 sysdate - ? 这样的算术一起使用。有异常:Unknown data type: "?"

我试图在运行时将sysdate 字符串替换为timestamp '2018-01-01 11:11:11.123'parsedatetime('2018-01-01 11:11:11.123', 'yyyy-MM-dd hh:mm:ss.SSS') 之类的东西。有同样的例外,就像之前的尝试一样。

是的,我可以将 cast(? as number) 添加到我的所有 sql 中,但这对我来说不是一个好的解决方案。

你有什么想法,我该怎么做?

ps:我也使用 Spring。也许会有所帮助

【问题讨论】:

  • 是否可以将日期处理逻辑从数据库中移出到 Java 中?这样一来,SQL 变得更简单,测试变得更容易,并且您不太可能遇到来自 H2 的错误消息。
  • 也许你可以创建一个函数SYSDATE() 来返回一个日期?

标签: java sql spring integration-testing h2


【解决方案1】:

如果您同时使用两个数据库,则应避免使用特定于供应商的语法。

您可以使用符合 SQL 标准的

LOCALTIMESTAMP - INTERVAL '30' MINUTE

在最新版本的 Oracle 和 H2 中。

我已经遇到过这个问题,这就是它的解决方案。

【讨论】:

    猜你喜欢
    • 2021-11-28
    • 2021-11-17
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 2021-11-07
    • 2019-03-28
    相关资源
    最近更新 更多