2012-12-06 66 views
0

我在Oracle 11g數據庫中有一個名爲end_time(類型爲timestamp(6))的字段。我的要求是獲取大於當前時間戳記的記錄。當我使用遠程數據庫時,我需要oracle數據庫服務器的當前時間。如何根據SYSTIMESTAMP使用Hibernate/Oracle11g獲取記錄

經過一番研究,我才知道SYSTIMESTAMP返回DB所在機器的當前時間戳。

所以我只是把一個條件像end_time> SYSTIMESTAMP,但它不會過濾記錄。我的結束時間是類型時間戳(6)。

我必須使用任何轉換功能嗎?我如何從Hibernate做到這一點?任何想法?

回答

0

您是否可以進一步解釋「不過濾記錄」,結果中是否有太多的行或幾行?

你的條件看起來絕對OK:

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 
+0

我的問題是,我必須使用任何轉換功能比較日期?我覺得記錄沒有正確過濾。我會交叉驗證。什麼是SYSTIMESTAMP的類型?它是時間戳(6)嗎?如果是這樣,我不想顯式覆蓋,因爲我的end_time是類型時間戳(6)。 – ASChakkalakal

+0

是的,SYSTIMESTAMP具有數據類型TIMESTAMP(6)WITH TIMEZONE。 –

相關問題