我创建了一条SQL语句,该语句从数据库中提取我们需要的数据以自动生成警报。 SQL如下:
select t.ps_ticket_id,
l.loc_desc,
n.descrip,
a.itemno,
p.print_last_date
from fgmulti f,
locations l,
V_ps_tickets t,
non_conform n,
arinvt a,
ps_ticket p
where f.loc_id = l.id and
f.arinvt_id = t.arinvt_id and
n.id = f.non_conform_id and
f.arinvt_id = a.id and
p.id = t.ps_ticket_id
我希望编写SQL,以查看我们从p.print_last_date提取的时间戳。我希望它仅提取最近10分钟内填充的数据。这可能吗?
答案 0 :(得分:1)
select sysdate, sysdate - interval '10' minute as minus_10_mins from dual;
"SYSDATE","MINUS_10_MINS"
09-JUL-2018 20:09:41,09-JUL-2018 19:59:41
答案 1 :(得分:0)
... and p.timestamp_column > sysdate - 10 / (24 * 60)
您将从SYSDATE
中减去10分钟(精确到秒)。 24 * 60
代表“一天24小时”和“每小时60分钟”。您需要这样做,因为-当减去两个DATE
数据类型值时,结果是它们之间的天天。
或者,您可以减去间隔,例如
... and p.timestamp_column > sysdate - interval '10' minute
例如:
SQL> select sysdate,
2 sysdate - 10 / (24 * 60) ten_minutes_ago_1,
3 sysdate - interval '10' minute ten_minutes_ago_2
4 from dual;
SYSDATE TEN_MINUTES_AGO_1 TEN_MINUTES_AGO_2
------------------- ------------------- -------------------
09.07.2018 22:11:04 09.07.2018 22:01:04 09.07.2018 22:01:04
SQL>
答案 2 :(得分:0)
仅供参考,您正在使用的代码虽然有效,但仍不符合ANSI标准,该标准现已使用了20年。这将连接与WHERE
子句分开:
SELECT t.ps_ticket_id, l.loc_desc, n.descrip, a.itemno, p.print_last_date
FROM fgmulti f
INNER JOIN locations l
ON f.loc_id = l.id
INNER JOIN v_ps_tickets t
ON f.arinvt_id = t.arinvt_id
INNER JOIN non_conform n
ON n.id = f.non_conform_id
INNER JOIN arinvt a
ON f.arinvt_id = a.id
INNER JOIN ps_ticket p
ON p.id = t.ps_ticket_id
WHERE p.print_last_date >= SYSDATE - 1/144;
(由于一天中有1,440分钟,所以1/144 = 10分钟。您也可以使用间隔,例如- INTERVAL '10' MINUTE
,但我认为这里没有很好的理由符合ANSI标准使用非标准功能时-无论如何SYSDATE
。)
希望这会有所帮助。
答案 3 :(得分:-2)
这在TSQL中有效,但是我认为您需要查找DateAdd函数的Oracle版本:
select t.ps_ticket_id,
l.loc_desc,
n.descrip,
a.itemno,
p.print_last_date
from fgmulti f,
locations l,
V_ps_tickets t,
non_conform n,
arinvt a,
ps_ticket p
where f.loc_id = l.id and
f.arinvt_id = t.arinvt_id and
n.id = f.non_conform_id and
f.arinvt_id = a.id and
p.id = t.ps_ticket_id AND
p.print_last_date > DATEADD(MINUTE, -10, GETDATE());