如何从 Derby 数据库中获取在最后 30 秒内插入的条目?

Posted

技术标签:

【中文标题】如何从 Derby 数据库中获取在最后 30 秒内插入的条目?【英文标题】:How do you get entries from a Derby database that were inserted during the last 30 seconds? 【发布时间】:2012-06-10 09:52:55 【问题描述】:

我是 Derby 的新手(基本上是一般的数据库),我正在尝试使用 Java 通过 Eclipse 来体验 Derby。

我要做的是从生成报告后的最后 30 秒内生成当前在 Derby 数据库中的所有条目的报告。

我设法在 mysql 中得到了我想要的东西:

SELECT * FROM table WHERE datetime > (now() - 间隔 30 秒)

在 Derby 中是否有等效或类似的功能?

【问题讨论】:

【参考方案1】:

很遗憾,Derby 不支持标准 (ANSI) SQL 日期算法。您需要使用 JDBC 转义函数:

c:\db-derby-10.8.2.2\bin>ij
ij version 10.8
ij> connect 'jdbc:derby:c:/temp/sotest';
ij> create table foo (datetime timestamp);
0 rows inserted/updated/deleted
ij> insert into foo values (current_timestamp);
1 row inserted/updated/deleted
ij> commit;
ij> select *
from foo
where datetime > fn timestampadd(SQL_TSI_DAY, -10, current_timestamp);
> > DATETIME
-----------------------------
2012-06-10 12:32:48.859

1 row selected
ij>

有关函数的完整列表,请参阅参考手册:http://db.apache.org/derby/docs/10.8/ref/rrefjdbc88908.html

【讨论】:

我之前实际上尝试过使用此命令,但我一直收到以下错误:INTEGER is an invalid type for argument number 2 of TIMESTAMPDIFF. @Stephen:它对我有用。您需要向我们展示产生该错误的代码(并请包括表格的定义) 没问题,这里是:SELECT * FROM app.user_count WHERE datetime > fn timestampdiff(SQL_TSI_SECOND, -30, CURRENT_TIMESTAMP); @Stephen:正如我所说:那个确切的陈述对我有用(见我的编辑)。显然有些事情你没有告诉我们。 感谢您的编辑,它看​​起来确实适合您。不知道为什么它对我不起作用,但这是我输入时的输出:pastebin.com/88fa3Nt3

以上是关于如何从 Derby 数据库中获取在最后 30 秒内插入的条目?的主要内容,如果未能解决你的问题,请参考以下文章

从 Derby 获取 PreparedStatement 查询

ORA-01722: 尝试在接下来 30 秒内获取预定信号的 Oracle 查询中的无效数字

如何从弹性搜索中获取最后30分钟的记录

如何将数据从 Ms 访问迁移到 Derby 数据库或如何将数据从 My sql 迁移到 Derby 数据库

如何在 React 中 2 秒内隐藏元素

AFNetworking 2.0:凭据未在前一次请求的 30 秒内发送到身份验证