Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função NUMTODSINTERVAL() no Oracle


No banco de dados Oracle, o NUMTODSINTERVAL() função converte um número em um INTERVAL DAY TO SECOND literal.

Sintaxe


A sintaxe fica assim:
NUMTODSINTERVAL(n, 'interval_unit')

O n argumento é o número para o qual converter.

O valor para interval_unit especifica a unidade de n e deve resolver para um dos seguintes valores de string:
  • 'DAY '
  • 'HOUR '
  • 'MINUTE '
  • 'SECOND '

O interval_unit argumento não diferencia maiúsculas de minúsculas.

Exemplo


Segue um exemplo para demonstrar:
SELECT NUMTODSINTERVAL(1, 'SECOND')
FROM DUAL;

Resultado:
+00 00:00:01.000000

Aqui está outro que usa um minuto:
SELECT NUMTODSINTERVAL(1, 'MINUTE')
FROM DUAL;

Resultado:
+00 00:01:00.000000

Frações de Segundos


Por padrão, a precisão do retorno é 9. Aqui está um que especifica frações de segundos no primeiro argumento:
SELECT NUMTODSINTERVAL(10.123456789, 'SECOND')
FROM DUAL;

Resultado:
+00 00:00:10.123456789

Aqui está o que acontece se mudarmos para outra unidade de intervalo:
SELECT NUMTODSINTERVAL(10.123456789, 'DAY')
FROM DUAL;

Resultado:
+10 02:57:46.666569600

Argumentos nulos


Passando null para qualquer argumento resulta em null :
SET NULL 'null';
SELECT 
    NUMTODSINTERVAL(1, null),
    NUMTODSINTERVAL(null, 'SECOND')
FROM DUAL;

Resultado:
   NUMTODSINTERVAL(1,NULL)    NUMTODSINTERVAL(NULL,'SECOND') 
__________________________ _________________________________ 
null                       null                             

Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que null ocorre como resultado de um SQL SELECT demonstração.

No entanto, você pode usar SET NULL para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null deve ser devolvido.

Argumento ausente


Chamar a função com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT NUMTODSINTERVAL()
FROM DUAL;

Resultado:
Error starting at line : 1 in command -
SELECT NUMTODSINTERVAL()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action: