lunes, 19 de marzo de 2012

ORA-01481 - Si es texto trátalo como texto.



El siguiente campo TIME_SEND  es un VARCHAR2(20) y guarda hora minutos segundos. Ejemplo: 122040. Ante este tipo de casos siempre aclaro que no es mi letra, osea, algún otro hizo ese campo con ese tipo de datos y yo no lo puedo cambiar así como así.

El punto es que para un reporte en Microstrategy, necesito formatear ese valor que quede: 12:20:40. Para lo cual utilizo esta consulta:

SELECT TO_CHAR(TIME_SEND,'hh:mi:ss') as callTime
FROM Tabla;



Y aparece el error ORA-01481:

ORA-01481: modelo de formato numérico no válido
01481. 00000 -  "invalid number format model"
*Cause:    The user is attempting to either convert a number to a string
           via TO_CHAR or a string to a number via TO_NUMBER and has
           supplied an invalid number format model parameter.
*Action:   Consult your manual.

Para este error mi solución es sencilla. Si es texto trátalo como texto.

SELECT SUBSTR(TIME_SEND,1,2)||':'||SUBSTR(TIME_SEND,3,2)||':'||SUBSTR(TIME_SEND,5,2) AS CALLTIME
FROM Tabla;


No hay comentarios: