2011-05-04 19 views
7

Consulta:función de intervalo en el oráculo

SELECT INTERVAL '300' month, 
     INTERVAL '54-2' year to month, 
     INTERVAL ' 11:12:10.1234567' hour to second 
    FROM DUAL; 

El resultado de la consulta anterior es:

+25-00,+54-02,+00 11:12:10.1234567 

Por favor alguien puede explicar a mí cómo esta consulta está dando a esta salida, con una explicación acerca de la función de intervalo?

+1

Ver: http://askanantha.blogspot.com/2007/08/interval-datatypes-in-oracle.html –

Respuesta

10

INTERVAL no es una función que es una palabra clave que introduce un intervalo literal y como indica un tipo de datos . Similar a lo que están haciendo los literales DATE '2011-05-04' o TIMESTAMP '2011-05-04 17:18:19'.

Detalles acerca intervalo literales
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF00221
http://docs.oracle.com/cd/E11882_01/server.112/e41084/expressions009.htm#SQLRF52084

Los detalles sobre el intervalo tipo de datos:
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i128552

6

intervalo es una función que se utiliza para deducir o añadir (días, años, meses, horas, minutos y segundos) a la fecha indicada. intervalo de '300' mes: 25-0 Motivo: 300/12 (meses) da como cociente de 25 y el resto como 0 por lo que la salida será 25-0

intervalo '54 -2' año a mes: 54-2 Motivo: Como no ha mencionado ninguna fecha, está dando como está. si usa seleccione sysdate + intervalo '54 -2 'año a mes desde dual; salida será: 12/01/2066

sydate: 10/01/2012 lo que añadir 54 a 12 = 66 y la adición de 2 meses a octubre que será dec.

Lo mismo con la última opción también.