Foros del Web » Programación para mayores de 30 ;) » Java »

Error de la base de datos

Estas en el tema de Error de la base de datos en el foro de Java en Foros del Web. Hola a todos, tengo el siguiente problema: Estoy desarrollando una aplicación en java y utilizo una base de datos MySQL. Tengo tablas en las que ...
  #1 (permalink)  
Antiguo 26/05/2008, 10:11
 
Fecha de Ingreso: febrero-2008
Mensajes: 65
Antigüedad: 16 años, 2 meses
Puntos: 0
Exclamación Error de la base de datos

Hola a todos, tengo el siguiente problema:

Estoy desarrollando una aplicación en java y utilizo una base de datos MySQL.

Tengo tablas en las que hay campos con fechas pero que no es obligatorio introducir ningún valor, por lo que el resultado que se almacena en estos campos es "0000-00-00".

Mi problema viene a la hora de recuperar esos campos. Si el valor es "0000-00-00" (es decir, es nulo), me sale el siguiente mensaje de error:

Value '0000-00-00' can not be represented as java.sql.Date

¿Alguien sabría cómo podría solucionarlo?

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 26/05/2008, 10:35
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Error de la base de datos

Si te fijas, el error te lo da en el código de java y no de mysql, debes averiguar el formato de java.sql.Date y acomodar primero el valor del campo date de mysql para acoplarlo con la variable de java.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 26/05/2008, 11:01
 
Fecha de Ingreso: febrero-2008
Mensajes: 65
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Error de la base de datos

El error sale cuando accedo al resultSet y cojo el valor

resultset.getDate("fecha");

¿Cómo acoplaría el campo date de MySQL con la variable java?

Muchas gracias
  #4 (permalink)  
Antiguo 27/05/2008, 01:32
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Error de la base de datos

¿El campo fecha en la BDD de que tipo de datos es? Es ciertamente extraño que almacene "0000-00-00" como nulo por que nulo es un valor especial en BDD y no suele tener representacion alguna (excepto null, nulo o no pintar nada).

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 27/05/2008, 07:03
 
Fecha de Ingreso: febrero-2008
Mensajes: 65
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Error de la base de datos

es de tipo Date
  #6 (permalink)  
Antiguo 27/05/2008, 07:54
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: Error de la base de datos

Hola me parece que estas mesclando la clase java.util.Date con la java.sql.Date que son cosas totalmentes diferentes
saludos
__________________
"La magia no existe, la programacion si"

A/P Agustin Sivoplas
[email protected]
  #7 (permalink)  
Antiguo 27/05/2008, 08:02
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: Error de la base de datos

Hola.

mira con el paquete java.sql puedes trabajar fechas de la siguiente manera.
Código PHP:
  long lnMilisegundos utilDate.getTime();
  
java.sql.Date sqlDate = new java.sql.Date(lnMilisegundos);
  
java.sql.Time sqlTime = new java.sql.Time(lnMilisegundos);
  
java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(lnMilisegundos);
  
  
System.out.println("sql.Date: "+sqlDate);
  
System.out.println("sql.Time: "+sqlTime);
  
System.out.println("sql.Timestamp: "+sqlTimestamp); 
y tu salida es esta

Código PHP:
sql.Date2004-05-20
sql
.Time19:01:46
sql
.Timestamp2004-05-20 19:01:46.593 
ahora yo tengo una BD en DB2 y una tabla en la cual se almacenan fechas de tipo time stamp, cuando el valor es nulo en realidad no almacena 0000-00-00 por eso greeEyed te pregunta el tipo de Dato.

volviendo al tema. cuando hago una consulta yo obtengo los valores asi.

[PHP]
Date date=new Date();
Timestamp fechaEntrega = new Timestamp(date.getTime());

.....

fechaEntrega = callSP.getTimestamp(4);
[PHP]

con esto obtengo los campos timeStamp de la base, es solo una idea pero puedes cambiar de java.sql.Timestamp a java.sql.Date
  #8 (permalink)  
Antiguo 29/05/2008, 16:52
 
Fecha de Ingreso: mayo-2008
Mensajes: 2
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Error de la base de datos

Lo intentaste bajar como un String y despues manipularlo de forma que te cuadren los valores que quieres????

Asi haces un casteo y sale
  #9 (permalink)  
Antiguo 11/01/2012, 06:28
 
Fecha de Ingreso: mayo-2007
Mensajes: 1
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Error de la base de datos

Hola q tal,

Una opción, aunque seguro que no es la mejor ni la más apropiada que se me ocurre es contralar la excepción que salta, es decir, cuando consultas el resultset del campo de tipo Date, lo encapsulas en un try/catch de tipo SqlException y tratas el valor del campo.

Lo dicho, seguramente no sea una solución muy elegante pero funciona...

Saludos.
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 03:03.