Получите разницу времени в минутах между текущим временем и временем, когда данные были вставлены в БД - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть система, отправляющая сторонний API-запрос на другой сервер. Но я хочу убедиться, что пользователь не запросит снова в течение следующих 15 минут после первого запроса. Поэтому я проверяю разницу во времени в нижеприведенном методе, который работает неправильно

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

Здесь d.CREATE_DATE также сохраняется с использованием ключевого слова SYSDATE при отправке первого запроса. Я получил номер, но это, кажется, не правильно. Поэтому я хочу знать, как я могу принять разницу во времени в минутах

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Для оракула достаточно просто вычесть даты, если поле "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
0 голосов
/ 09 ноября 2018

Один вариант будет записывать и сравнивать с 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 хранятся входящие метки времени, используя SYSTIMESTAMP в качестве входящего значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...