在 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 模式下插入未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章
Sql 语句:在要插入的字段中未指定主键时,插入键更新未按预期工作
emacs 控制台模式 Org-mode 删除线未按预期显示