在 h2 数据库 oracle 模式下插入未按预期工作

Posted

技术标签:

【中文标题】在 h2 数据库 oracle 模式下插入未按预期工作【英文标题】:Insert in h2 database oracle mode not working as expected 【发布时间】:2020-03-25 22:00:00 【问题描述】:

我正在运行组件测试并将数据以 Oracle 模式写入内存中的 h2 数据库。问题是,在进行下面的插入以将数据加载到数据库中时,它不起作用。在银行中搜索数据时,它显示当前日期,就好像它只是一个 sysdate。

INSERT INTO AVAILABLE_EMAILS (ID, EMAIL, TYPE, DAT_CREATION) VALUES (1, 'mock@mock.com', 0, SYSDATE - (30/1440));

INSERT INTO AVAILABLE_EMAILS (ID, EMAIL, TYPE, DAT_CREATION) VALUES (2, 'mock_2@mock.com', 0, SYSDATE - (20/1440));

有人可以帮我吗?

【问题讨论】:

你期待什么日期? 第一次插入时,我预计当前日期和时间减去 30 分钟,但只返回当前日期和时间,就好像我在做 sysdate 一样 我看了一些类似的情况,但没有解决办法 【参考方案1】:

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

您可以使用符合 SQL 标准的

LOCALTIMESTAMP - INTERVAL '30' MINUTE

在最新版本的 Oracle 和 H2 中。

H2 还支持一些旧的 Oracle 特定的日期时间算术运算符,但在 H2 中整数除法的结果是一个整数值,30/1440=0。您可以改用30.0/1440(在两个数据库中),但最好完全避免这种计算,标准语法更具可读性。

【讨论】:

以上是关于在 h2 数据库 oracle 模式下插入未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

TableviewCells 未按预期插入

Sql 语句:在要插入的字段中未指定主键时,插入键更新未按预期工作

range.insertNode() 未按预期插入文本节点

emacs 控制台模式 Org-mode 删除线未按预期显示

在 oracle 模式下升级 h2 数据库 jar 后选择语句失败

为啥模态演示表单未按预期显示?