0

我有一个要求,我需要从表中找到所有超过 180 天的行。为此,我编写了以下 SQL 查询:

SELECT * FROM table_name WHERE 
(EXTRACT (DAY  FROM (CURRENT_TIMESTAMP - UPDATE_TS))) > 180

在上面的查询中,UPDATE_TS是一个存储每行时间戳的列。

我在 Oracle 中运行了上述查询,它返回了所需的结果。

我正在使用 Hibernate 进行数据持久性,所以我想使用 Hibernate Criteria API 来做同样的事情。我在 Hibernate 中工作不多,所以发现它有点困难。

有人可以帮我吗?

4

2 回答 2

0

Hibernate 查询语言将是您的理想选择。

from YourEntity e where (day(current_date()) - day(e.myDate)) > 180

我没有测试过这个 HQL,但类似的东西应该可以工作。阅读 HQL: http ://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html

于 2012-09-20T16:40:31.060 回答
0

您可以获得 CURRENT_DATE | 之一 当前时间 | CURRENT_TIMESTAMP 用于 JPQL 中的日期/时间操作。我没有看到EXTRACT任何实现中的用法。所以你可能想直接比较天数?查看JPQL 文档以获取更多详细信息。

于 2012-09-20T14:25:05.777 回答