【发布时间】:2014-09-19 10:11:11
【问题描述】:
我需要计算 JPA 中两个日期之间的天数。
例如:
CriteriaBuilder.construct(
MyCustomBean.class
myBean.get(MyBean_.beginDate), //Expression<Date>
myBean.get(MyBean_.endDate), //Expression<Date>
myDiffExpr(myBean) //How to write this expression from the 2 Expression<Date>?
);
到目前为止,我试过了:
-
CriteriaBuilder.diff()。但它无法编译,因为此方法需要一些N extends Number并且Date没有扩展Number。 -
我尝试扩展
PostgreSQL82Dialect(因为我的目标数据库是 PostgreSQL):public class MyDialect extends PostgreSQL82Dialect { public MyDialect() { super(); registerFunction("datediff", //In PostgreSQL, date2 - date1 returns the number of days between them. new SQLFunctionTemplate(StandardBasicTypes.LONG, " (?2 - ?1) ")); } }
这样编译,请求成功,但返回的结果不一致(今天和明天之间的78天)。
你会怎么做?
【问题讨论】:
-
如何尝试使用 #1
date.getTime(),因为它是Long,另一种方法是尝试在 JPA 中使用本机 sql 查询? -
@ANyarThar 你有办法从
Expression<Date>得到这个Expression<Long>(日期时间)吗? -
我的建议就像下面的答案。
-
请编写您要使用的示例查询/语句。我仍然不确定你想要实现什么。
标签: java postgresql jpa