ORACLE查询查询记录是否存在-每小时

ORACLE query check record exist or not - hourly

示例 table 数据如下:

FORMID | QUANTITY | DATEADDED
1      | 150      | 4/12/2017 2:33:27 PM
2      | 100      | 4/12/2017 3:15:10 PM

我希望查询根据当前时间每小时检查数据是否存在。

示例

Current time: 18:00

所以当查询检查数据时,它应该没有数据,因为我们看到最后的数据是在 3:15:10 下午,当前时间是 18:00(超过 2 小时前)。

我不知道该怎么做,

SELECT * FROM TBQUANTITY WHERE...

这将获取 DATEADDED 列从现在(使用服务器时间)到一小时前的所有行。

SELECT *
FROM   TBQUANTITY
WHERE  dateadded BETWEEN SYSDATE - INTERVAL '1' HOUR AND SYSDATE

对于查看是否有一些记录的简单临时查询,请使用其他答案中建议的 SYSDATE

如果您的目标是获取所有记录并且每条记录只处理一次,则应更加小心。

您可以每小时安排一次查询select查询上一小时的数据,例如

 select * from T where DATEADDED >  trunc(sysdate,'HH') -1/24 
     and DATEADDED <= trunc(sysdate,'HH')

请注意,此查询 select 上一小时的数据(在 HH 上截断 ) 例如从 12-04-2017 17:00:00 到 12-04-2017 18:00:00 并且您使用半开间隔 而不是 BETWEEN 这将 select 记录整整一个小时的时间戳两次。