Oracle Select with time

时间:2013-09-25 17:55:22

标签: mysql sql oracle

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

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

我知道NOW()使用systimestamplastactivity是时间戳。 我正试图在最后5秒内检查活动。

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

3 个答案:

答案 0 :(得分:1)

select * from recent_activity where systimestamp-lastactivity < interval '5' second;

答案 1 :(得分: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 

答案 2 :(得分:0)

create table blah(blah1 timestamp,blah2 timestamp);

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

选择*来自blah;

Blah1                                   Blah2
01/OCT/13 02:17:41.300000000 PM         01/OCT/13 02:17:37.000000000 PM

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

select * 
from recent_activity
where lastactivity > (NOW() - .00005)

这实际上为你提供最后的4.3秒,但是对于大多数解决方案来说可能足够接近,或者如果最好能够超过,则可以使.00006获得5.some秒。