Subtraindo Datas no Oracle - Tipo de Dados Número ou Intervalo?

Tenho uma dúvida sobre algumas das operações internas dos tipos de dados Oracle DATE e INTERVAL. De acordo comeferência SQL do Oracle 11.2, quando você subtrair 2 tipos de dados DATE, o resultado será um tipo de número NUMBE

No teste superficial, isso parece ser verdade:

CREATE TABLE test (start_date DATE);
INSERT INTO test (start_date) VALUES (date'2004-08-08');
SELECT (SYSDATE - start_date) from test;

retornará um tipo de dados NUMBE

Mas agora, se você fizer:

SELECT (SYSDATE - start_date) DAY(5) TO SECOND from test;

você obtém um tipo de dados INTERVAL. Em outras palavras, o Oracle pode converter o NÚMERO da subtração DATE em um tipo INTERVAL.

Então agora imaginei que poderia tentar inserir um tipo de dados NUMBER diretamente entre parênteses (em vez de executar 'SYSDATE - start_date', o que resulta em um NÚMERO

SELECT (1242.12423) DAY(5) TO SECOND from test;

Mas isso resulta no erro:

ORA-30083: syntax error was found in interval value expression

Então minha pergunta é: o que está acontecendo aqui? Parece que a subtração das datas deve levar a um NÚMERO (como demonstrado na instrução SELECT # 1), que NÃO PODE ser convertida automaticamente para o tipo INTERVAL (conforme demonstrado na instrução SELECT # 3). Mas o Oracle parece conseguir fazer isso de alguma forma, se você usar a expressão de subtração DATE em vez de inserir um NÚMERO bruto (instrução SELECT # 2

Obrigad

questionAnswers(8)

yourAnswerToTheQuestion