如何使用Hibernate / Oracle11g根据SYSTIMESTAMP获取记录

时间:2012-12-06 10:33:53

标签: oracle hibernate jpa oracle11g

我的Oracle 11g数据库中有一个名为end_time的字段(类型为timestamp(6))。我的要求是获取大于当前时间戳的记录。当我使用远程数据库时,我需要我的oracle数据库服务器的当前时间。

经过一些研究后我才知道 SYSTIMESTAMP 会返回DB所在机器的当前时间戳。

所以我只是提出了像end_time>这样的条件。 SYSTIMESTAMP,但它不会过滤记录。我的结束时间是timestamp(6)类型。

我必须使用任何转换功能吗?我怎么能从Hibernate做到这一点?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您能否进一步解释“不过滤记录”,结果中的行数太少或者很少?

你的情况看起来绝对正常:

CREATE TABLE mytable (ts TIMESTAMP(6));
INSERT INTO mytable (ts) VALUES (TIMESTAMP '2012-12-06 17:00:00');
INSERT INTO mytable (ts) VALUES (TIMESTAMP '2012-12-06 18:00:00');

SELECT SYSTIMESTAMP FROM DUAL;
 06.12.2012 17:10:38.347629000 +01:00

SELECT * FROM mytable WHERE ts > SYSTIMESTAMP;
06.12.2012 18:00:00.000000000

SELECT * FROM mytable WHERE ts < SYSTIMESTAMP;
06.12.2012 17:00:00.000000000