如何在 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
如果您有未来的日期,或者不只是今天,您还需要添加一个上限。
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
如果您有未来的日期,或者不只是今天,您还需要添加一个上限。