カラムdate_colを持つテーブルがあります。 私はそれは私がどのように操作を行うことができ、1時間時差が5分の場合はoracle sql 10gでのピックアップ方法
で最後の5分で別のテーブルの
類似性を変更したレコードをピックアップするこのテーブルからすべての5分
をデータをフェッチジョブがありますそれ?
カラムdate_colを持つテーブルがあります。 私はそれは私がどのように操作を行うことができ、1時間時差が5分の場合はoracle sql 10gでのピックアップ方法
で最後の5分で別のテーブルの
類似性を変更したレコードをピックアップするこのテーブルからすべての5分
をデータをフェッチジョブがありますそれ?
機能の助けを借りて、オラクルでは非常に簡単ですsysdate
。 この関数は、DBサーバーから現在の日付の値を返します。これはあなたのタスクであなたを助けsysdate - (1/24)
希望 - 同様に1時間
select *
from <your-table>
where date_col > sysdate - ((5/24)/60)
-
ので、あなたのようなものを使用することができます。あなたのDATE_COLが最後の監査を保持すると仮定すると、
は、我々は、Oracleの日付で基本的な算術演算を行うことができます
select * from table1 where date_col between sysdate-(5/(24*60)) and sysdate
私はsqlで 'between'上限( 'sysdate')の代わりに'> '比較を使うようになった。 これはこれを行うためのアプローチです。 –
レコードを変更しました。したがって、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分以上続くとどうなりますか?または死んで再起動する必要がありますか?より堅牢なソリューションは、ジョブの開始時刻を記録し、以前のジョブが実行されてからタッチされたレコードを取得することです。
更新のたびにdate_colが更新されるのか、それとも挿入の間に使用されただけですか? – Ubercool
あなたはまた、** SYSDATE - NUMTODSINTERVAL(5、 'Minute')**または** SYSDATE - NUMTODSINTERVAL(1、 'Hour')**を条件として使用することもできます – hmmftg