0

我正在将 mysql 系统转换为使用 oracle,但是我遇到了这个查询的问题:

SELECT * 
  FROM recent_activity 
 WHERE TIME_TO_SEC(TIMEDIFF(NOW(), lastactivity )) < 5

我知道它NOW()使用systimestamp并且lastactivity是一个时间戳。我正在尝试检查最后 5 秒内的活动。

你知道我如何在 Oracle 中编写这个吗?

4

3 回答 3

1
select * from recent_activity where systimestamp-lastactivity < interval '5' second;
于 2013-09-26T04:01:28.987 回答
0

创建表 blah(blah1 时间戳,blah2 时间戳);

插入 blah 值(systimestamp,systimestamp - .00005);

从 blah 中选择 *;

呸呸呸呸
01/OCT/13 02:17:41.300000000 PM 01/OCT/13 02:17:37.000000000 PM

所以在你的情况下你应该能够做到

选择 *
来自最近的活动
最后一个活动 > (NOW() - .00005)

这实际上为您提供了最后 4.3 秒的循环时间,但对于大多数解决方案来说可能已经足够接近,或者如果更好地过去,则将其设为 0.00006 以获得 5.some 秒。

于 2013-10-01T04:22:31.417 回答
0

好的,现在我想我得到了这个工作:

 SELECT * FROM recent_activity WHERE EXTRACT (DAY FROM (systimestamp-lastactivity))*24*60*60+EXTRACT (HOUR FROM (systimestamp-lastactivity))*60*60+EXTRACT (MINUTE FROM (systimestamp-lastactivity))*60+ EXTRACT (SECOND FROM (systimestamp-lastactivity)) < 5 
于 2013-09-25T18:08:04.877 回答