获取当前时间与将数据插入数据库的时间之间的时间差(以分钟为单位)

时间:2018-11-09 09:07:22

标签: oracle

我有一个向其他服务器发出第三方API请求的系统。但是我想确保用户在第一个请求的下一个15分钟内不会再次请求。所以我用下面的方法检查时差,它不能正常工作,

ROUND(sysdate - d.CREATE_DATE,2) as PASSED_TIME

在发送第一个请求时,还使用d.CREATE_DATE关键字保存了SYSDATE。我得到一个数字,但似乎不正确。 所以我想知道如何在几分钟之内解决时差

2 个答案:

答案 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作为传入值存储传入的时间戳。