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

Error ORA-01830 con fecha

Estas en el tema de Error ORA-01830 con fecha en el foro de Oracle en Foros del Web. tengo un select como se ve aqui: select z.rowid clave, u.compania, to_date(z.fecha, 'yyyy/mm/dd') fecha_det, o.codigo_actual tipo_documento, z.documento, z.observacion, z.monto, z.signo, z.cuenta from asientos_det_tmp z, documentos_tmp ...
  #1 (permalink)  
Antiguo 26/05/2010, 14:02
 
Fecha de Ingreso: julio-2008
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Error ORA-01830 con fecha

tengo un select como se ve aqui:
select z.rowid clave,
u.compania,
to_date(z.fecha,
'yyyy/mm/dd') fecha_det,
o.codigo_actual tipo_documento,
z.documento,
z.observacion,
z.monto,
z.signo,
z.cuenta
from asientos_det_tmp z,
documentos_tmp o,
pr_compania u,
cn_cuenta w
where to_date(z.fecha, 'yyyy/mm/dd') between to_date('2009/03/01','yyyy/mm/dd')
and to_date('2009/03/31','yyyy/mm/dd')
and z.tipo_documento = o.codigo_number
--where z.tipo_documento = o.codigo_number
and u.numero_compania = z.empresa
and u.compania = 'fp'
and z.documento = 1320
and o.codigo_actual = 'batd01'
and to_date(z.fecha, 'yyyy/mm/dd') = to_date('2009/03/25','yyyy/mm/dd')
and w.compania = u.compania
and w.codigo = z.cuenta
and nvl(w.movimiento,
' ') = 's';
este es un procedure que recibe 6 parametros 3 de ellos son fechas, las fechas inicial y final del between y un parámetro llamado CD_FECHA, todos estos ya los puse en el select y me da error, lo peor es que me funciona en una laptop en mi casa, pero corro el select en la maquina de mi trabajo, me da el error ora-01830 que da error en la parte de la comparacion de las fechas, ya lo probe con esa parte en comentario y no da me da error en el trabajo pero sin comentario da error.
ademas al seguir el procedure paso a paso me da este error ora-06553 pls-103 encountered the symbol = when..........................
………………………………………………
Probando cambie la línea que compara las 2 fechas igual( en amarillo si se ve), con esto:
AND TO_DATE(Z.FECHA, 'yyyy/mm/dd') = to_date('25-MAR-09','yyyy/mm/dd')

Y ya no da error, pero igual no selecciona nada, 0 rows.

alguien que me de una ayuda con esto, gracias
  #2 (permalink)  
Antiguo 26/05/2010, 15:14
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Error ORA-01830 con fecha

charlie_zaa

TO_DATE es una función utilizada para hacer conversiones a tipo de dato fecha. Los parametros de entrada son:
un string (la fecha), un formato y si se requiere un nls_lenguage.

si vos ingresás como parámetro una fecha para que la convierta a fecha, no va a estar haciendo nada. Ahí está el primer error.

Cuando tenés esto:
Cita:
AND TO_DATE(Z.FECHA, 'yyyy/mm/dd') = to_date('25-MAR-09','yyyy/mm/dd')
se presenta un error, ya que el formato que utilizas no corresponde a la cadena de entrada. Debe ser
to_date('25-MAR-09','DD-MON-YY')
o
to_date('2009/03/25','YYYY/MM/DD')

Otra cosa que no me suena, es cuando haces uso del nvl (NULL Value).
Que le dices que si es nulo, te ponga ''.
NULL es igual a ''. (Aunque por definición oficial de la documentación diga lo contrario) Por lo que tampoco estarías haciendo nada.

Cuentanos como te va.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 26/05/2010 a las 15:22
  #3 (permalink)  
Antiguo 27/05/2010, 03:07
 
Fecha de Ingreso: julio-2008
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Busqueda Respuesta a Error ORA-01830 con fecha

Gracias por responder al mensaje, pero tengo una tabla llamada asientos_cab_tmp y otra llamada asientos_det_tmp ambas tienen donde dice fecha, como varchar2, no como date, por eso hago la conversion con to_date(z.fecha,'YYYY/MM/DD'), en cambio las otras tablas si tienen la fecha como date.


Ademas el mayor problema es que si me funciono en otra maquina independiente en mi casa pero no en la de mi trabajo, tal vez haya un servidor del que dependa esta, pero no se ver como veo eso, porque a simple vista parece independiente.

O sera otro parametro de configuracion regional o como saber?

Gracias por tu atencion
  #4 (permalink)  
Antiguo 27/05/2010, 06:34
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Error ORA-01830 con fecha

Por eso... pero en ese campo varchar como se guardan las fechas? En que formato?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 27/05/2010, 09:47
 
Fecha de Ingreso: julio-2008
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Error ORA-01830 con fecha

La fecha se guarda en esas tablas temporales con formato YYYY/MM/DD, pero esta como varchar2 en esas tablas el problema, como ya dije, es al hacer el select da el error en las fechas.

Gracias por tu atencion
  #6 (permalink)  
Antiguo 27/05/2010, 09:49
 
Fecha de Ingreso: julio-2008
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Información Error ORA-01830 con fecha

Ademas uso un procedure que lee de esas tablas temporales y ubica los datos en las tablas definitivas llamadas cn_asiento y cn_dasiento, las cuales tienen el campo fecha como date.

Gracias por tu atencion
  #7 (permalink)  
Antiguo 27/05/2010, 09:56
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Error ORA-01830 con fecha

La función TO_DATE la estas usando correctamente.
El que mucho abarca, poco aprieta. Convierte un problema grande en pequeños problemas.

Antes de meterla en un procedure, ejecuta aparte la consulta y asegurate que corre bien. Otra cosa que puede pasar, es que tengas en este campo varchar las fechas en formato YYYY/MM/DD
pero algun registro(s) no esté cumpliendo con esta característica, lo cual impide a la función hacer una correcta conversión de lo que tienes a lo que quieres.

saludos

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 29/05/2010, 16:13
 
Fecha de Ingreso: julio-2008
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Error ORA-01830 con fecha

Ya probe el select, en mi laptop de casa funciona perfectamente, encambio en la de mi trabajo no funciona, yo puse un trigger en ambas pcs, que se ve asi:

CREATE OR REPLACE TRIGGER change_date_format
AFTER logon ON DATABASE
call DBMS_SESSION.SET_NLS('NLS_DATE_FORMAT','DD/MM/YYYY')

PERO NO CREO QUE FUNCIONA, PORQUE LO DESHABILITE EN LA pc de mi trabajo, y no cambio nada, igual no funciona.

Todo empieza desde excel, donde tengo un archivo, con varios campos, entre ellos la fecha en formato YYYY/MM/DD, luego la informacion del excel la cargo en la tabla temporal en donde tiene formato YYYY/MM/DD como varchar2.

Un amigo me dijo que revise tambien la configuracion regional de las maquinas, por si acaso.

Gracias por tu atencion
  #9 (permalink)  
Antiguo 29/05/2010, 16:57
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Error ORA-01830 con fecha

Cita:
Un amigo me dijo que revise tambien la configuracion regional de las maquinas, por si acaso.
Y lo hiciste?
Es muy probable que por esta parte sea el problema. Si se abre un archivo de excel en dos pcs con configuración regional diferente, la lectura será diferente deacuerdo a como esté configurado el formato de la fecha.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #10 (permalink)  
Antiguo 31/05/2010, 09:01
 
Fecha de Ingreso: julio-2008
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Error ORA-01830 con fecha

Saludos a todos:

Miren ya resolvi el problema, pero no entiendo que paso asi que agradeceria una explicacion,y si saben un link a una pagina donde me explique detalladamente, porque daba error por la configuracion regional.

Entonces resolvi el problema de mi trabajo asi, cambiandole la configuracion regional a la misma que tenia en mi laptop, solo asi funciono, en mi PC del trabajo estaba la configuracion regional asi:

Opciones Regionales

Español(españa)

Ubicacion:

España


En cambio en la laptop de mi casa estaba asi:

Opciones regionales

Español(Mexico)

Ubicacion:

Ecuador

Entonces puse la configuracion de mi laptop en la PC del trabajo y funciono, recordando, que primero organizo la informacion en un archivo de excel, luego copio y pego en un bloc de notas una columna que es una concaternacion de varios campos, que se asi:

Insert into asientos_tmp values(18,'2009/01/30',7,9,'2009/07/12','DF','VENTA ARTICULOS');

Donde las fechas las recibo asi: 30/01/2009 12:00:00 a.m.

y las cambio para el insert con la funcion: =TEXTO(B1161,"AAAA/MM/DD")

Para que se vea como en el insert.

Claro despues uso el to_date para llenar las tablas definitivas, con la fecha en formato date.

En resumen no entiendo como es que funciono, que tuvo que ver el excel y la configuracion regional y porque se da esto.

Gracias por su atencion, Carlos Rodriguez
  #11 (permalink)  
Antiguo 31/05/2010, 10:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Error ORA-01830 con fecha

Sencillo.

Si coges una hoja de excel e insertas una columna tipo fecha, dependiendo de como se encuentre la configuraciòn regional de equipo asì la acomodará en el formato.

Haz la siguiente prueba para que te convenzas.
Abre excel, selecciona toda la primera columna, dale click en formato y escoge fecha. Ahí te muestra de primero cual es el formato de fecha que se selecciona.

Si despues se ingresa en cualquier celda de esa columna una fecha con el formato que se nos ocurra, automaticamente no la cambia al formato establecido en el archivo. ENtonces.... a ti te podia estar pasando lo mismo. En un equipo puedes tener todo bien, con formato y visualizaciòn como lo quieres.... pero si trasladas el archivo a un equipo con configuraciòn diferente, veràs como el archivo interpreta las fechas en un formato diferente. Al ocurrir esto, la funció TO_DATE va a cambiar deacuerdo al equipo y por eso el formato de conversiòn no siempre es bien interpretado por oracle.

se entiende?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 02/06/2010 a las 12:59
  #12 (permalink)  
Antiguo 02/06/2010, 12:58
 
Fecha de Ingreso: julio-2008
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Prueba ORA-01830 con fecha

Gracias por tu respuesta, hare la prueba para convenzerme, pero me has dado luces en este gran problema que tenia.

Gracias

Etiquetas: fechas
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:28.