style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Duda con guardado de fecha Date con hora en MySql

Hola a todos..

Estoy intentando guardar un Date() en MySql pero sólo guarda la fecha y no la hora.

Este es el metodo que va a la BD:

@Override
        public boolean Actualizar(int intIdTarea, Date dateFechaActivacion) {

                Query objQuery;
                String strQuery;
                try {
                        strQuery = "update SbTareaHb set hora_activacion = :dateFechaActivacion where id_tarea = :intIdTarea";
                       
                        objQuery = this.getSession().createQuery(strQuery);
                       
                        objQuery.setDate("dateFechaActivacion", dateFechaActivacion);
                        objQuery.setInteger("intIdTarea", intIdTarea);
                        objQuery.executeUpdate();

                        return true;           
                } catch (HibernateException ex) {
                        objLog.error("Operacion Actualizar", ex); // Se informa el error
                        throw ex; // Propagamos el error a las capa superior
                }
        }

Supongamos que le quiero sumar horas a la fecha y luego actualizar el valor en la BD:

Date newDate = objTarea.getDateHoraActivacion();
                                                DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                                                                                       
                                                newDate = sumarHorasFecha(objTarea.getDateHoraActivacion(), 3 //LE SUMO 3 HORAS);
                                                newDate = (Date)formatter.parse(newDate.toString());
                                               
                                                objTarea.setDateHoraActivacion(newDate);

objFctryDao.getSbTareaDao().Actualizar(objTarea.getIntIdTarea(), objTarea.getDateHoraActivacion());

private Date sumarDiasFecha(Date fecha, int dias){
                Calendar calendar = Calendar.getInstance();
            calendar.setTime(fecha); // Configuramos la fecha que se recibe
           
            calendar.add(Calendar.DAY_OF_YEAR, dias);  // numero de días a añadir
            return calendar.getTime(); // Devuelve el objeto Date con los nuevos días añadidos       
        }
               

Primero que todo me da un error que no puede hacer el parseo newDate = (Date)formatter.parse(newDate.toString());

Y cuando guardo en BD el campo queda sólo con la fecha y no con hora.

Como puedo hacer que se guarde con hora? La columna en la tabla es Datetime, y en mi clase objeto es Date.

Muchas gracias.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

type = "timestamp"

 

¿Y por qué no pruebas guardando la fecha y hora actuales?

objQuery.setDate("dateFechaActivacion", new java.util.Date());

Puesto que estás usando Hibernate, ¿qué tipo de dato tienes definido para ese campo?, es decir, type = "timestamp".

Echa un vistazo a §1.1.3 del manual de referencia de Hibernate (1); de ahí la siguiente cita:

Hibernate no puede saber si la propiedad, la cual es de java.util.Date, debe mapear a una columna date, timestamp o time de SQL. Por medio de un convertidor timestamp, mapeamos la propiedad y mantenemos la información completa sobre la hora y fecha.

¡Por si sirve de algo!


Notas

  1. https://docs.jboss.org/hibernate/orm/3.6/reference/es-ES/

~~~

solucionado..

Hola...gracias me sirvió el uso de timestamp.

Finalmente dejé Timestamp en BD y Date() en la clase...

guardo la fecha haciendo la conversion de Date a timestamp antes de gurdar.

  ... new Timestamp(new Date().getTime());

gracias

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">