我正在将 mysql 系统转换为使用 oracle,但是我遇到了这个查询的问题:
SELECT *
FROM recent_activity
WHERE TIME_TO_SEC(TIMEDIFF(NOW(), lastactivity )) < 5
我知道它NOW()
使用systimestamp
并且lastactivity
是一个时间戳。我正在尝试检查最后 5 秒内的活动。
你知道我如何在 Oracle 中编写这个吗?
select * from recent_activity where systimestamp-lastactivity < interval '5' second;
创建表 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 秒。
好的,现在我想我得到了这个工作:
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