sql >> Base de Datos >  >> RDS >> Oracle

Función NUMTOYMINTERVAL() en Oracle

En Oracle Database, el NUMTOYMINTERVAL() función convierte un número a un INTERVAL YEAR TO MONTH literal.

Sintaxis

La sintaxis es así:

NUMTOYMINTERVAL(n, 'interval_unit')

El n argumento es el número por el cual convertir.

El valor de interval_unit especifica la unidad de n y debe resolverse en uno de los siguientes valores de cadena:

  • YEAR
  • MONTH

La interval_unit el argumento no distingue entre mayúsculas y minúsculas.

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SELECT NUMTOYMINTERVAL(1, 'MONTH')
FROM DUAL;

Resultado:

+00-01

Aquí hay otro que usa el año:

SELECT NUMTOYMINTERVAL(1, 'YEAR')
FROM DUAL;

Resultado:

+01-00

Fracciones

Aquí hay uno que contiene una parte fraccionaria en el primer argumento:

SELECT 
    NUMTOYMINTERVAL(10.56, 'YEAR') AS "Year",
    NUMTOYMINTERVAL(10.56, 'MONTH') AS "Month"
FROM DUAL;

Resultado:

     Year     Month 
_________ _________ 
+10-07    +00-11    

Sensibilidad de mayúsculas y minúsculas

El segundo argumento no distingue entre mayúsculas y minúsculas:

SELECT 
    NUMTOYMINTERVAL(150, 'YEAR') AS "YEAR",
    NUMTOYMINTERVAL(150, 'year') AS "year"
FROM DUAL;

Resultado:

      YEAR       year 
__________ __________ 
+150-00    +150-00    

Argumentos nulos

Pasando null para cualquier argumento da como resultado null :

SET NULL 'null';
SELECT 
    NUMTOYMINTERVAL(1, null),
    NUMTOYMINTERVAL(null, 'year')
FROM DUAL;

Resultado:

   NUMTOYMINTERVAL(1,NULL)    NUMTOYMINTERVAL(NULL,'YEAR') 
__________________________ _______________________________ 
null                       null                           

De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null ocurre como resultado de un SQL SELECT declaración.

Sin embargo, puede usar SET NULL para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null debe ser devuelto.

Argumento faltante

Llamar a la función con el número incorrecto de argumentos, o sin pasar ningún argumento, genera un error:

SELECT NUMTOYMINTERVAL()
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT NUMTOYMINTERVAL()
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: