Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Donde y como utilizar una sentencia en el script

Buenos días, estoy cargando datos desde un odbc que apunta a una base de datos de Oracle, y me da un error en una select, debido al formato de los datos. El error es el siguiente:

ERROR at line 1:

ORA-01843: not a valid month

ORA-06512: at "EPSILON.F_LABORALES_MES", line 1

Me han comentado que con la sentencia

ALTER SESSION SET NLS_DATE_FORMAT="DD/MM/YYYY HH24:MI:SS";

se solucionaría este error, pero no sé en que parte del script ponerla.

Saludos y gracias a todos



6 Replies
mbernales
Contributor III
Contributor III

Hola David,

También me ha pasado el mismo error, pero al trabajar con una base de datos oracles, hay veces que no me reconoce el mes de la consulta.

Por lo general lo soluciono pasandole el formateo del mes al query con la funcion to_date(). Me seria más util que publicaras la query para poder ver con detalle la consulta.

Not applicable
Author

Hola Manuel,

Antes de nada, gracias por la respuesta,

El caso es que la select que ejecuto es sobre una vista, en la cual no puedo darle formato, ya que el campo MES, ya está calculado en esta tabla.

Adjunto la select que me está dando los problemas.

SELECT ID_EMPRESA||'-'||ID_TRABAJADOR||'-'||ID_SECUENCIA AS ZPK_TRABAJADOR, EJERCICIO,MES,ID_EMPRESA,ID_TRABAJADOR,ID_SECUENCIA, C_PROMEDIO,DIAS_LABORALES,HORASxDIAS_LAB,HORAS_COT, HORASxDIAS_NAT,DNT,DNM,DC,DT,DL_999,DF_999 FROM V_CM_PROMEDIO

El problema como veo, es del formato de fecha en la propia base de datos.
Me han comentado que si incluyo esta sentencia
ALTER SESSION SET NLS_DATE_FORMAT="DD/MM/YYYY HH24:MI:SS
el problema se solucionaría, lo que sucede, es que en el script la ponga donde la ponga, me da error.

Un saludo y muchas gracias por todo



Not applicable
Author

Hola David

Espero no contestar una burrada, ya que no tengo conocimientos informaticos, pero como supongo que hacer una prueba no es un problema....

Añade la variable que te han comentado, hazlo detras de las variables que añade por defecto Qlik

pero pon solo esto

SET NLS_DATE_FORMAT="DD/MM/YYYY HH24:MI:SS

Francamente esto (ALTER SESSION), no tengo ni idea que es

Suerte

Saludos


Not applicable
Author

Hola Luis,

He probado lo que me dices, y acepta la sentencia, pero sigue dando el fallo.

Pienso que al ser una vista, el error está en la creación de esta vista y deberé arreglarlo en la base de datos de oracle.

Aún así, gracias por la solución.

Saludos.

David.

Not applicable
Author

Hola David,

Por lo que comentas del error, me parece que es únicamente problema con Oracle.

De todos modos, no veo, en la consulta que nos muestras, que se use "EPSILON.F_LABORALES_MES". Eso me lleva pensar que tal vez, esto que pongo entrecomillado sea algo que use la consulta que genera la vista, y por alguna razón no funcione bien y no esté bien construida la vista.

¿Es una vista que te han creado recientemente? ¿Conectándote desde un TOAD (por ejemplo) eres capaz de ver datos de esa vista y/o ejecutar la consulta y que te devueva datos?

Yo probaría o me aseguraría primero que la vista funciona correctamente, y ver si lanzando la consulta desde otro programa te da el mismo error de Oracle.

Saludos,

Borja.

Not applicable
Author

Al final lo que estaba sucediendo, es que el formato en el cliente de oracle donde se estaba ejecutando la select, no era el mismo que el que tiene la base de datos, donde se origina la vista.

He cambiado el formato en el cliente, y la select ya se ejecuta correctamente.

Muchas gracias a todos por la información facilitada para la resolución del problema.

Un saludo.

David