我有一个向其他服务器发出第三方API请求的系统。但是我想确保用户在第一个请求的下一个15分钟内不会再次请求。所以我用下面的方法检查时差,它不能正常工作,
ROUND(sysdate - d.CREATE_DATE,2) as PASSED_TIME
在发送第一个请求时,还使用d.CREATE_DATE
关键字保存了SYSDATE
。我得到一个数字,但似乎不正确。
所以我想知道如何在几分钟之内解决时差
答案 0 :(得分:2)
对于oracle,如果字段“ CREATE_DATE”是“ date”数据类型,则只需减去日期并乘以24 * 60即可得到分钟差。 例如:
select to_char(sysdate-15/24/60,'dd-mon-yyyy hh24:mi:ss') as first_request /*15 minutes back*/
,to_char(sysdate,'dd-mon-yyyy hh24:mi:ss') as current_request
,(sysdate - sysdate +15/24/60)*24*60 as diff_in_minutes
from dual
答案 1 :(得分:1)
一个选项是记录并与'
进行比较:
SYSTIMESTAMP
此答案假设SELECT
EXTRACT (day FROM ts) * 24*60 +
EXTRACT (hour FROM ts) * 60 +
EXTRACT (minute FROM ts) AS PASSED_TIME
FROM
(
SELECT SYSTIMESTAMP - CREATE_TS ts
FROM yourTable
) t;
列使用CREATE_TS
作为传入值存储传入的时间戳。