APEX_UTIL.GET_SINCE выключен на 6 минут - PullRequest
5 голосов
/ 18 октября 2019

Как может получиться, что APEX_UTIL.GET_SINCE с текущим временем говорит мне, что эта временная метка будет в будущем 6 минут? До этого он работал как ожидалось и возвращал «сейчас», но вскоре говорит, что текущая дата в будущем.

Системное время базовой системы Linux имеет правильное время (до миллисекунды). ) и sysdate, возвращаемое этим оператором, также является правильным текущим временем, поэтому я ожидаю, что функция Oracle будет использовать неправильную ссылку откуда-то еще?

enter image description here

1 Ответ

4 голосов
/ 18 октября 2019

Насколько я могу судить, он не

говорит о том, что отметка времени составляет 6 минут в будущем

, но в прошлом.


Похоже, что первый вызов устанавливает "отметку", а последующие вызовы возвращают, сколько времени прошло с тех пор.

Первый вызов в 19:39: 11 и это «сейчас»:

SQL> select to_char(sysdate, 'hh24:mi:ss') sysd, apex_util.get_since(sysdate) result from dual;

SYSD     RESULT
-------- --------------------------------------------------
19:39:11 Now

Сейчас я просто нажимаю клавишу ВВЕРХ на клавиатуре и нажимаю клавишу ВВОД:

SQL> select to_char(sysdate, 'hh24:mi:ss') sysd, apex_util.get_since(sysdate) result from dual;

SYSD     RESULT
-------- --------------------------------------------------
19:39:12 1 seconds from now

SQL> select to_char(sysdate, 'hh24:mi:ss') sysd, apex_util.get_since(sysdate) result from dual;

SYSD     RESULT
-------- --------------------------------------------------
19:39:13 2 seconds from now

SQL> select to_char(sysdate, 'hh24:mi:ss') sysd, apex_util.get_since(sysdate) result from dual;

SYSD     RESULT
-------- --------------------------------------------------
19:39:14 3 seconds from now

SQL> select to_char(sysdate, 'hh24:mi:ss') sysd, apex_util.get_since(sysdate) result from dual;

SYSD     RESULT
-------- --------------------------------------------------
19:39:15 4 seconds from now

SQL> select to_char(sysdate, 'hh24:mi:ss') sysd, apex_util.get_since(sysdate) result from dual;

SYSD     RESULT
-------- --------------------------------------------------
19:39:16 5 seconds from now

SQL>

После ввода вышеуказанного сообщения (Я имею в виду, отвечая на вопрос), я звоню снова;он говорит, что прошло 3 минуты с момента отметки:

SQL> select to_char(sysdate, 'hh24:mi:ss') sysd, apex_util.get_since(sysdate) result from dual;

SYSD     RESULT
-------- --------------------------------------------------
19:41:41 3 minutes from now

SQL>

Чтобы сбросить ее, я выхожу из SQL * Plus и начинаю заново:

SQL> exit
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

c:\Temp>sqlplus scott/tiger

SQL*Plus: Release 11.2.0.2.0 Production on Pet Lis 18 19:42:31 2019

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> col result format a50

Новая отметка установлена ​​на19: 42: 36:

SQL> select to_char(sysdate, 'hh24:mi:ss') sysd, apex_util.get_since(sysdate) result from dual;

SYSD     RESULT
-------- --------------------------------------------------
19:42:36 Now

SQL> select to_char(sysdate, 'hh24:mi:ss') sysd, apex_util.get_since(sysdate) result from dual;

SYSD     RESULT
-------- --------------------------------------------------
19:42:38 2 seconds from now

SQL> select to_char(sysdate, 'hh24:mi:ss') sysd, apex_util.get_since(sysdate) result from dual;

SYSD     RESULT
-------- --------------------------------------------------
19:42:39 3 seconds from now

SQL>
...