2016-11-28 73 views
0

我有表中有列date_col。 有工作,從這個表我想拿起已在過去5一刻改變如何在oracle sql 10g中拾取記錄的時間差是5分鐘

相似的另一個表需要1小時

我該怎麼辦記錄獲取數據每5分鐘

那?

+0

每次更新後date_col是否更新,或只是在插入時使用? – Ubercool

+0

你也可以使用** SYSDATE - NUMTODSINTERVAL(5,'Minute')**或** SYSDATE - NUMTODSINTERVAL(1,'Hour')**作爲你的條件 – hmmftg

回答

1

在函數sysdate的幫助下,它在oracle中非常簡單。 該函數從DB服務器返回當前日期值。

,所以你可以使用類似 -

select * 
    from <your-table> 
    where date_col > sysdate - ((5/24)/60) 

同樣一小時 - sysdate - (1/24)

希望這可以幫助你在你的任務。

1

假設你date_col的持有最後審覈更改的記錄

select * from table1 where date_col between sysdate-(5/(24*60)) and sysdate 
+0

我也想過在sql中使用'between'但想上限('sysdate')改變了我的想法,只是使用'>'比較。 那麼這也是一種做法.. –

0

我們可以做到與Oracle日期基本的算術。所以要找到五分鐘前的日期,我們可以這樣做:where date_col >= sysdate - (5/(24*60))

稍微更具表現力的方法使用區間數據類型。對於秒到秒的範圍,有TO_DSINTERVAL()函數:where date_col >= sysdate - to_ds_interval('0 0:5:0')。一小時的時間間隔爲where date_col >= sysdate - to_ds_interval('0 1:0:0')


您的方法建議使用sysdate。作爲第一步,這很好,但對於真正的應用程序來說可能不夠靈活。如果你的工作超過五分鐘會發生什麼?或者死亡,必須重新啓動?更強大的解決方案將是記錄作業開始時間,並獲取自上次作業運行以來已被觸及的記錄。

相關問題