2016-11-28 4 views
0

カラムdate_colを持つテーブルがあります。 私はそれは私がどのように操作を行うことができ、1時間時差が5分の場合はoracle sql 10gでのピックアップ方法

で最後の5分で別のテーブルの

類似性を変更したレコードをピックアップするこのテーブルからすべての5分

をデータをフェッチジョブがありますそれ?

+0

更新のたびにdate_colが更新されるのか、それとも挿入の間に使用されただけですか? – Ubercool

+0

あなたはまた、** SYSDATE - NUMTODSINTERVAL(5、 'Minute')**または** SYSDATE - NUMTODSINTERVAL(1、 'Hour')**を条件として使用することもできます – hmmftg

答えて

1

機能の助けを借りて、オラクルでは非常に簡単ですsysdate。 この関数は、DBサーバーから現在の日付の値を返します。これはあなたのタスクであなたを助けsysdate - (1/24)

希望 - 同様に1時間

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

-

ので、あなたのようなものを使用することができます。あなたのDATE_COLが最後の監査を保持すると仮定すると、

1

は、我々は、Oracleの日付で基本的な算術演算を行うことができます

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

私はsqlで 'between'上限( 'sysdate')の代わりに'> '比較を使うようになった。 これはこれを行うためのアプローチです。 –

0

レコードを変更しました。したがって、5分前の日付時刻を見つけるには、これを行うことができます:where date_col >= sysdate - (5/(24*60))

もう少し表現力豊かなアプローチでは、インターバルデータ型を使用します。数日から数秒の範囲では、TO_DSINTERVAL()関数:where date_col >= sysdate - to_ds_interval('0 0:5:0')があります。 1時間間隔はwhere date_col >= sysdate - to_ds_interval('0 1:0:0')になります。


あなたのアプローチでは、sysdateを使用することを提案しています。これは最初のステップとしては問題ありませんが、実際のアプリケーションには十分な弾力はありません。あなたの仕事が5分以上続くとどうなりますか?または死んで再起動する必要がありますか?より堅牢なソリューションは、ジョブの開始時刻を記録し、以前のジョブが実行されてからタッチされたレコードを取得することです。

関連する問題