如何在 java JDBC 休眠中使用 ::date?

How to use ::date in java JDBC hibernate?

PG 管理员

我对 PGadmin 中的 SQL 编辑器有疑问:

select * from list_taxi where last_update::date = now()::date     

显示效果不错,显示今天online/update的出租车。 (我使用 ::date)。 然后我使用 hibernate 将查询实现到 Java。

Java - JDBC 休眠

我有一个时间戳变量

Timestamp nowTime = new Timestamp(System.currentTimeMillis() );

我在连接到 Postgresql 的 Java DAO 中有查询(JDBC - Hibernate)

ArrayList<Object[]> arrayList = 
(ArrayList) em.createQuery("SELECT lt FROM ListTaxi lt 
WHERE lt.lastUpdate::date = '" + nowTime + "'::date ")
.getResultList();

由于::date

结果出错
java.lang.IllegalArgumentException: 
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: 
: near line 1, column 75 [SELECT lt FROM model.ListTaxi lt WHERE 
lt.lastUpdate::date = lt.lastUpdate::date]

如何解决?

作为解决方法,您可以这样做

WHERE lastUpdate > :startOfTodayTimestamp  -- set this to :00:00:00 today

如果您有未来的日期,或者不只是今天,您还需要添加一个上限。