Это запрос:
SELECT NVL2 (null, SYSDATE - (SYSDATE - 1), SYSDATE) result from dual;
NVL2
(из документации ):
- Если
expr1
не равно нулю, то NVL2
возвращает expr2
. - Если
expr1
равно нулю, то NVL2
возвращает expr3
. >> Ваш запрос вернет EXPR3
Далее:
- , если
expr2
является числовым, то Oracle определяет, какой аргумент имеет наивысший числовой приоритет, неявно преобразуетдругой аргумент этого типа данных и возвращает этот тип данных.
Поскольку expr2
действительно является числовым (результат равен 1
);вам даже не нужна база данных, в ней говорится, что
sysdate - (sysdate - 1) = sysdate - sysdate + 1 = 1
, тогда expr3
также неявно преобразуется в число. sysdate
, являющаяся функцией, возвращающей date
тип данных, преобразуется в юлианскую дату.
SQL> SELECT NVL2 (null, SYSDATE - (SYSDATE - 1), SYSDATE) result from dual;
RESULT
----------
2458770,44
SQL> SELECT to_char(sysdate, 'J') result from dual;
RESULT
-------
2458770
Имеет смысл?