查询仅从前半小时获取记录,时间戳为unix epoch格式

时间:2017-07-11 04:29:24

标签: sql oracle epoch date-arithmetic

我希望SQL查询fetch/select只能从前半小时获取的记录。例如,如果我的调度程序在下午2点运行,然后在2:30再运行,则在2:30运行期间,它应该仅使用列{4}}中的列created_timestamp从下午2点到下午2点30分之间选择行。作为unix epoch格式的时间例如:

|created_timestamp|
|1497355750350    |
|1497506182344    |

2 个答案:

答案 0 :(得分:2)

我们可以用Oracle日期算术。从另一个日期中减去一个日期会将间隔作为小数。乘以86400可得出秒数。所以这是当前的unix expoch:

(sysdate - date '1970-01-01') * 86400

这意味着您的查询将类似于

select * from your_table
where created_timestamp >= (:last_run_time - date '1970-01-01') * 86400

诀窍是你的调度程序需要传入上一次运行的时间 - last_run_time - 来获取自那时以来添加的所有记录。

答案 1 :(得分:0)

您可以执行闪回查询

SELECT * FROM TABLE
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '30' MINUTE);