我想从名为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:缺少右括号
我做错了什么?
答案 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;