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

[SOLUCIONADO] Problemas con Java.util.Date y Java.Sql.Date

Estas en el tema de Problemas con Java.util.Date y Java.Sql.Date en el foro de Java en Foros del Web. Tengo un problema con respecto a esto de las fechas pues al insertar utilizo la siguiente clase y pues inserto de forma correcta(fecha exacta) sin ...
  #1 (permalink)  
Antiguo 02/07/2012, 11:44
 
Fecha de Ingreso: junio-2012
Ubicación: Cercado de Lima - Lima - Peru
Mensajes: 27
Antigüedad: 11 años, 10 meses
Puntos: 2
Pregunta Problemas con Java.util.Date y Java.Sql.Date

Tengo un problema con respecto a esto de las fechas pues al insertar utilizo la siguiente clase y pues inserto de forma correcta(fecha exacta) sin problemas pero cuando quiero listar y cojo la fecha de la base de datos esta me trae el con 2 dias y un mes menor.

FUNCTION INSERTAR
Cita:
public boolean InsertEmployee(EntityEmployee entityemployee) {
Connection cn = null;
CallableStatement cl = null;
boolean opeEstado = false;

try {

String call = "{CALL InsertEmployee(?,?,?,?,?,?,?,?,?,?)}";
cn = Conexion.getConexion();

cn.setAutoCommit(false);
cl = cn.prepareCall(call);

cl.setString(1, entityemployee.getFirstName());
cl.setString(2, entityemployee.getLastName());
cl.setString(3, entityemployee.getDni());
cl.setDate(4, new java.sql.Date(entityemployee.getDateNac().getTime( )));
cl.setString(5, entityemployee.getAdress());
cl.setString(6, entityemployee.getPhone());
cl.setString(7, entityemployee.getCellphone());
cl.setInt(8, entityemployee.getJobID());
cl.setDate(9, new java.sql.Date(entityemployee.getDateIni().getTime( )));
cl.setString(10, entityemployee.getEmail());

if (cl.executeUpdate() == 1) {
opeEstado = true;
} else {
opeEstado = false;
}

if (opeEstado) {
cn.commit();
} else {
Conexion.deshacerCambios(cn);
}

Conexion.cerrarCall(cl);
Conexion.cerrarConexion(cn);

return opeEstado;

} catch (SQLException e) {
e.printStackTrace();
Conexion.deshacerCambios(cn);
Conexion.cerrarCall(cl);
Conexion.cerrarConexion(cn);
} catch (Exception e) {
e.printStackTrace();
Conexion.deshacerCambios(cn);
Conexion.cerrarCall(cl);
Conexion.cerrarConexion(cn);
}

return opeEstado;

}
FUNCTION LISTAR
Cita:
public ArrayList<EntityEmployee> ListEmployee() {
Connection cn = null;
PreparedStatement ps = null;
ResultSet rs = null;
ArrayList<EntityEmployee> lstEmployees = new ArrayList<EntityEmployee>();

try {

String prepStm = "Select e.EmployeeID,e.FirstName,e.LastName,e.DNI,e.DateNa c,e.Adress,e.Phone,e.CellPhone,e.JobID,J.JobName,e .FechaInicio,e.Email from Employees e, Job j Where e.Estate='A' And j.JobID=e.JobID";
cn = Conexion.getConexion();
ps = cn.prepareStatement(prepStm);

rs = ps.executeQuery();

while (rs.next()) {
EntityEmployee objEmployee = new EntityEmployee();

objEmployee.setEmployee(rs.getString(1));
objEmployee.setFirstName(rs.getString(2));
objEmployee.setLastName(rs.getString(3));
objEmployee.setDni(rs.getString(4));
objEmployee.setDateNac(rs.getDate(5));
objEmployee.setAdress(rs.getString(6));
objEmployee.setPhone(rs.getString(7));
objEmployee.setCellphone(rs.getString(8));
objEmployee.setJobID(rs.getInt(9));
objEmployee.setJobName(rs.getString(10));
objEmployee.setDateIni(rs.getDate(11));
objEmployee.setEmail(rs.getString(12));
//agregamos a la lista el objeto client
lstEmployees.add(objEmployee);
}

Conexion.cerrarPrep(ps);
Conexion.cerrarConexion(cn);

return lstEmployees;

} catch (SQLException e) {
e.printStackTrace();
Conexion.deshacerCambios(cn);
Conexion.cerrarPrep(ps);
Conexion.cerrarConexion(cn);
} catch (Exception e) {
e.printStackTrace();
Conexion.deshacerCambios(cn);
Conexion.cerrarPrep(ps);
Conexion.cerrarConexion(cn);
}
return null;
}
PD:
-El campo de en la BD es DATE.
-Campo de erroes DateNac y DateIni
  #2 (permalink)  
Antiguo 02/07/2012, 13:05
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Problemas con Java.util.Date y Java.Sql.Date

Es difícil ver error cuando en el código llegan unas fechas misteriosas escondidas en un objeto (employee), haces el insert llamando a un procedure que no vemos, luego el select y dices que vienen cambiadas. Habría que ver si esas fechas ya vienen mal, si hay algún error en el procedure, etc, etc, etc.

Lo del mes de más o de menos puede ser algún problema en la obtención de la fecha. Si usas Calendar, el mes de Enero es 0 y si no lo tienes en cuenta puede haber un mes de diferencia (1 sería Febrero).

Lo de los días suena más raro, no tiene pinta de ser problema de tipos, sino más bien de código en algún sitio.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 02/07/2012, 13:47
 
Fecha de Ingreso: junio-2012
Ubicación: Cercado de Lima - Lima - Peru
Mensajes: 27
Antigüedad: 11 años, 10 meses
Puntos: 2
Pregunta Respuesta: Problemas con Java.util.Date y Java.Sql.Date

Como dije en el insert no tengo ningun problema, se guarda correctamente en la BD asi que no vi la necesidad de poner el procedure. Ahora sobre lo de los dias si yo tambien lo veo raro segun he buscado info encontre con ese tema de los meses.
Despues sobre que haya problema con mi codigo, pues no creo tambien hize que lo imprimiera la fecha ahi mismo en la clase para ver que dato(System.out.print rs.getdate(5)) y pues desde ahi ya me bota mal la fecha.
  #4 (permalink)  
Antiguo 02/07/2012, 14:58
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Problemas con Java.util.Date y Java.Sql.Date

Si la fecha está bien guardada en base de datos, rs.getDate() tiene que devolverla bien. Revisa entonces el where del select, no sea que te esté devolviendo la fecha de otra fila.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 02/07/2012, 15:00
 
Fecha de Ingreso: junio-2012
Ubicación: Cercado de Lima - Lima - Peru
Mensajes: 27
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Problemas con Java.util.Date y Java.Sql.Date

Bueno le di solucion ah mi problema aunque no me parecio hacerlo de esta forma en fin...

Dejo el codigo:

Cita:
Calendar cal = new GregorianCalendar();
cal.setTime(rs.getDate(5));
cal.add(Calendar.DATE, 2);
objEmployee.setDateNac(cal.getTime());
Como siempre era dos dias menos pues tan solo agrege dos dias dentro de la lista y listo espero que cuando lo ponga en red ande normal...
Saludos!
  #6 (permalink)  
Antiguo 02/07/2012, 15:55
 
Fecha de Ingreso: marzo-2012
Ubicación: Madrid
Mensajes: 74
Antigüedad: 12 años, 1 mes
Puntos: 12
Respuesta: Problemas con Java.util.Date y Java.Sql.Date

No me parece una solucion en absoluto aceptable.

Etiquetas: date, java.sql.date, java.util.date, netbeans
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 01:07.