小编典典

在HQL中执行日期/时间数学运算?

hibernate

我正在寻找如何在HQL查询中执行日期/时间数学。具体来说,如何从current_timestamp()函数结果中增加或减少(x)时间?还是我必须为此使用SQL并希望正在运行的任何数据库都支持它?

HQL查询示例:

FROM RandomThing
WHERE randomTime IS NOT NULL AND
      randomTime >= current_timestamp() AND
      randomTime <= (current_timestamp() + :timeToAdd)

我可以将:timeToSubtract参数定义为任何特定单位,尽管大于小时的值是不希望的,而秒数则是最理想的。

澄清:我意识到这可以在查询之外轻松完成。但是出于哲学原因,可以说使用数据库服务器的时间而不是查询系统的时间很重要。实际示例:我正在查询自动时间戳,以获取最近(x)时间内的所有条目。由于时间戳是由数据库系统确定的,因此也必须使用数据库的当前时间。


阅读 508

收藏
2020-06-20

共1个答案

小编典典

如果您需要数据库服务器的时间,则可以首先执行一个简单的hql查询以获取时间戳,然后以java计算maxTimestamp并将获取的时间戳和计算出的maxTimeStamp传递给类似ccclark的查询。

2020-06-20