我正在将mysql系统转换为使用oracle,但我遇到了这个查询的问题:
SELECT *
FROM recent_activity
WHERE TIME_TO_SEC(TIMEDIFF(NOW(), lastactivity )) < 5
我知道NOW()
使用systimestamp
而lastactivity
是时间戳。
我正试图在最后5秒内检查活动。
你知道如何在Oracle中写这个吗?
答案 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秒。