在 h2 数据库 oracle 模式下插入未按预期工作
Insert in h2 database oracle mode not working as expected
我是运行组件测试,正在Oracle模式下将数据写入内存中的h2数据库。问题是,在下面进行插入以将数据加载到数据库中时,它不起作用。在银行里搜索数据时,它显示当前日期,就好像它只是一个系统日期。
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));
有人可以帮助我吗?
如果您同时使用两个数据库,则应避免使用特定于供应商的语法。
您可以使用SQL符合标准的
LOCALTIMESTAMP - INTERVAL '30' MINUTE
在最新版本的 Oracle 和 H2 中。
H2 还支持一些遗留的 Oracle 特定的日期时间算术运算符,但 H2 中整数除法的结果是一个整数值,30/1440=0
。您可以使用 30.0/1440
代替(在两个数据库中),但最好完全避免这种计算,标准语法更具可读性。
我是运行组件测试,正在Oracle模式下将数据写入内存中的h2数据库。问题是,在下面进行插入以将数据加载到数据库中时,它不起作用。在银行里搜索数据时,它显示当前日期,就好像它只是一个系统日期。
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));
有人可以帮助我吗?
如果您同时使用两个数据库,则应避免使用特定于供应商的语法。
您可以使用SQL符合标准的
LOCALTIMESTAMP - INTERVAL '30' MINUTE
在最新版本的 Oracle 和 H2 中。
H2 还支持一些遗留的 Oracle 特定的日期时间算术运算符,但 H2 中整数除法的结果是一个整数值,30/1440=0
。您可以使用 30.0/1440
代替(在两个数据库中),但最好完全避免这种计算,标准语法更具可读性。