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

java.sql.SQLException: Illegal hour value '53' for java.sql.Time type in value '53:00

Estas en el tema de java.sql.SQLException: Illegal hour value '53' for java.sql.Time type in value '53:00 en el foro de Mysql en Foros del Web. Hola a todos! Hago una consulta para sumar la columna duracion de una tabla. Esta columna es de tipo Time y para conseguir la suma ...
  #1 (permalink)  
Antiguo 30/10/2008, 02:53
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 18 años, 9 meses
Puntos: 0
java.sql.SQLException: Illegal hour value '53' for java.sql.Time type in value '53:00

Hola a todos!

Hago una consulta para sumar la columna duracion de una tabla. Esta columna es de tipo Time y para conseguir la suma hago lo siguiente

rs=s.executeQuery("SELECT dni, CAST(SUM(duracion) AS TIME) as TiempoTotal, SUM(coste_asociado) as CosteTotal FROM tiempo_atencion WHERE dia between '"+fini+"' and '"+ffin+"' GROUP BY dni ");


así consigo que me sume todas las horas bien.

El problema es que desde el código java, al hacer rs.getTime("TiempoTotal") me da el error de java.sql.Time. Parece ser que todas las horas mayores de 23:59:59 dan este error.

Hay alguna manera de solucionarlo?

graciasss
  #2 (permalink)  
Antiguo 30/10/2008, 12:42
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: java.sql.SQLException: Illegal hour value '53' for java.sql.Time type in v

Bueno, ya lo he solucionado. Os pongo lo que he hecho por si a alguien le viene bien alguna vez.

Resulta que las columnas son de tipo time. Para que la suma de la duración la hiciese bien, primero hago un casting del resultado al tipo TIME.

Cuando daba error era al acceder desde java haciendo ResultSet.getTime("tiempototal"); me decía que no podía coger horas mayores de 24 horas.

Para solucionarlo, en la consulta hago un casting a tipo string y luego desde el resultset accedo a la columna haciendo getstring.

La consulta queda así:

SELECT CONCAT('',CAST(SUM(duracion) AS TIME)) as TiempoTotal FROM tabla_tiempos GROUP BY dni ;

y accedo

ResultSet.getString("TiempoTotal")


Espero que os sirva!

un saludo
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 13:41.