【发布时间】:2019-09-26 07:00:50
【问题描述】:
我用 Hibernate HQL 编写了一个查询,它用时间戳列更新了一些记录:
where 子句:
creationTime >= :creationTimeFrom and creationTime <= :creationTimeTo
设置参数:
query.setDate("creationTimeFrom", creationTimeFrom);
query.setDate("creationTimeTo", creationTimeTo);
在某些情况下,查询结果与记录不匹配,有些记录没有更新,
我猜问题出在时区上。oracle 服务器时区设置为 UTC。但是客户端的时区不同。
【问题讨论】:
-
在 ANSI SQL 中,
ts BETWEEN a AND b与ts >= a AND ts <= b相同,我认为在 HQL 中也是如此,无论如何它只是被翻译成一些 SQL 方言。所以,我不认为这是你的问题。 -
是的,ts BETWEEN a AND b 等同于 ts >= a AND ts
-
帖子已更新。
-
也许问题是您的
creationTime有一个与日期相关联的时间。然后尝试将creationTime转换为没有时间的格式。类似creationTime(to_date(column,'DD-MM-YYYY'))
标签: oracle hibernate timestamp hql timestamp-with-timezone