【发布时间】:2014-04-22 16:56:50
【问题描述】:
我的表中有两列,Created(TIMESTAMP) 和lifetime(BIGINT)。生命周期以秒表示。我想将生命周期列添加到时间戳列,并将该结果与另一个日期进行比较。
我引用了derby manual,并在“fn 关键字的 JDBC 转义语法”部分找到了对 TIMESTAMPADD 的支持:
{fn 函数调用} TIMESTAMPADD(interval, integerExpression, timestampExpression)
好的,我试过了:
SELECT i.messageId FROM ServerMessageEntity i
WHERE {fn TIMESTAMPADD(SQL_TSI_SECOND, i.lifetime, i.created)} > :now
*:现在是我传入的参数:
query.setParameter
不幸的是,我得到了以下异常:
异常描述:解析查询时出现语法错误 [SELECT i.messageId 来自 ServerMessageEntity i WHERE {fn TIMESTAMPADD(SQL_TSI_SECOND, i.lifetime, i.created)} > :now], 意外的字符 [{]。
似乎解决方案是将秒添加到创建的时间戳,并让结果成为另一个时间戳。任何有关如何执行此操作的帮助或语法将不胜感激。谢谢!
其他信息:我将 Oracle TopLink 12c (12.1.2) 用于 ORM 和 Derby 10.10.2.0
【问题讨论】: