Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Error usando months_between

Estas en el tema de Error usando months_between en el foro de Oracle en Foros del Web. Hola. Tengo una duda rapida. Estoy usando Oracle Xpress 11g. Y pues ando jugando un poco con el. Mi duda es. Por que el siguiente ...
  #1 (permalink)  
Antiguo 17/05/2009, 13:29
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Error usando months_between

Hola.
Tengo una duda rapida.
Estoy usando Oracle Xpress 11g.
Y pues ando jugando un poco con el.
Mi duda es.
Por que el siguiente querry me da error??

Código PHP:
select months_between(to_date('1-JAN-2008'), to_date(sysdate)) from dual
Cita:
ORA-01858: se ha encontrado un carácter no numérico donde se esperaba uno numérico
Soy muy nuevo en esto de las bases de datos y en oracle.
Espero me puedan aclara que esta mal aqui.

Saludos
  #2 (permalink)  
Antiguo 17/05/2009, 14:06
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Error usando months_between

to_date(sysdate) no tiene sentido, ya que sysdate es una función que devuelve un tipo fecha, to_date('1-JAN-2008') puede que le falte la máscara, es decir to_date('1-JAN-2008','dd-mon-yyyy'), de esta manera, el parser sabe como interpretar la cadena de caracteres.

Saludos
  #3 (permalink)  
Antiguo 17/05/2009, 19:27
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Error usando months_between

Si bien matanga tiene razón en no ser necesario convertir la función sysdate por retornar un datetime, el error se presenta por tratar de utilizar la palabra jan (january) en la fecha del mes.

Dependiendo de que lenguaje se tenga configurado oracle en el momento, tomará el casteo de esta forma. y si está en un lenguaje diferente a ingles, habrá problemas de sintaxis en algunos casos.

Si usas oracle en español prueba la misma sentencia pero con '01-ene-2008' y creo que no tendrás problemas.

un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 18/05/2009, 00:21
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: Error usando months_between

Si juntamos vuestras dos respuestas, tenemos la solucion al problema expuesto por instru.

Como recomendación personal mia, recomiendo que cuando se juega con fechas siempre se le ponga la mascara de formato, así nos evitamos problemas de lenguaje y demas.
  #5 (permalink)  
Antiguo 18/05/2009, 19:56
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Respuesta: Error usando months_between

Efectivamente se trataba del JAN. Al cambiarlo a modo numerico 01, no me dio el error.

Gracias por su ayuda.

Saludos
  #6 (permalink)  
Antiguo 18/05/2009, 21:29
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 1 mes
Puntos: 7
Respuesta: Error usando months_between

Cita:
Iniciado por Instru Ver Mensaje
Estoy usando Oracle Xpress 11g.
y nada mas aclarar que la express edition todavia esta en la 10g
__________________
Blogzote.com :-) Mi blog
  #7 (permalink)  
Antiguo 13/11/2010, 15:33
 
Fecha de Ingreso: agosto-2009
Mensajes: 3
Antigüedad: 14 años, 8 meses
Puntos: 0
Sonrisa Respuesta: Error usando months_between

Sólo decir que: ¡os quiero!

Es broma, pero no sabeis las vueltas que he dado para resolver algo parecido :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:56.