"错过右括号" oracle db中的错误

时间:2017-05-08 20:21:35

标签: sql oracle

我想从名为V_DISPOSITIVO的表中查询最后x分钟的数据 我有以下查询(例如,x = 10分钟):

SELECT FECHA
  FROM V_DISPOSITIVO
 WHERE FECHA > (select FECHA  - interval '10' minute 
                  from V_DISPOSITIVO  
                 where (rownum = 1) 
              order by FECHA desc)

它失败了,但输出并没有告诉我它失败的确切原因。它只是说

  

错误代码907,SQL状态42000:ORA-00907:缺少右括号

我做错了什么?

3 个答案:

答案 0 :(得分:1)

  

我需要保存最后一行的日期(可能是2年前),然后从那里减去x分钟。

没有" last"关系数据库中的行。如果你的意思是"最新的"日期或时间戳列中的值,只需使用max()并减去10分钟:

SELECT fecha
FROM v_dispositivo
WHERE fecha > (SELECT max(FECHA)  - interval '10' minute 
               FROM v_dispositivo);

答案 1 :(得分:0)

我认为“fecha”是一个日期时间列。如果是这样,请尝试以下代码

SELECT FECHA
FROM V_DISPOSITIVO
WHERE FECHA > sysdate - 10/(60*24)

WHERE FECHA > sysdate - interval '10' minute

答案 2 :(得分:0)

您可以使用分析函数在单个查询中执行此操作(并消除子查询):

SELECT FECHA
FROM   (
  SELECT FECHA,
         MAX( FECHA ) OVER () AS MAX_FECHA
  FROM   V_DISPOSITIVO
)
WHERE  FECHA > MAX_FECHA - INTERVAL '10' MINUTE;