2012-05-25 42 views
8

Tengo un JDBC actual fecha y hora inserte en la base de datos Mysql.Fecha y hora en java

Envía la fecha actual y un tiempo fijo en el campo Tipo de fecha Mysql como 2012/05/25 00:00:00. La parte de fecha funciona muy bien pero el tiempo no muestra ningún valor.

estoy insertando el valor con el siguiente código:

java.util.Date myDate = new java.util.Date(); 
java.sql.Date sqlDate = new java.sql.Date(myDate.getTime()); 
PreparedStatement PStmt = con.prepareStatement(Sql query); 
PStmt.setDate(1,sqlDate); 
+0

¿Se puede pegar el código que inserta la fecha? ¿Qué tipo de columna usaste en la base de datos? – pablochan

+0

java.util.Date myDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date (myDate.getTime());
PreparedStatement PStmt = con.prepareStatement (consulta SQL);
PStmt.setDate (1, sqlDate); – Narayan

+0

¿Cuál es el tipo de columna en MySQL? – dbf

Respuesta

1

1) Use java.util.Date en su clase java.

2) Establecer datatye TIMESTAMP en mysql.

Date CreatedDate= new Date(System.currentTimeMillis()); 

Para PreparedStatement: Puede que sea así:

PreparedStatement PStmt = con.prepareStatement(Sql query); 
PStmt.setDate(1,CreatedDate); 
+0

Cuál debe ser la declaración preparada para este CreatedDate – Narayan

+3

No funcionó para mí porque es perder el tiempo. Utilice java.sql.Timestamp lugar con setTimestamp (...) –

2

creo que es necesario tener marca de tiempo como de tipo columna en mysql.

+0

hora se pueden muy bien también – bpgergo

16

Uso java.sql.Timestamp en lugar de java.util.Date

Por ejemplo, si está utilizando PreparedStatement para manejar su inserción, puede pasar su fecha ;

java.util.Date date = new Date(); 
pst.setTimestamp(columIndex, new java.sql.Timestamp(date.getTime())); 
+0

1: El problema es que 'java.sql.Date' es específicamente * * Sólo una fecha, por lo que descarta el componente de tiempo. –

+0

Muestra un error cuando intenté ejecutar la instrucción de inserción, es decir, muestra un error cuando uso pstmt.executeupdate(); – Narayan

+0

No ha especificado el error que está recibiendo, supongo que está solicitando el parámetro largo - vea la respuesta editada. – Bitmap

1

Aunque una entrada antigua, la respuesta es simple y depende de sus necesidades - según sus necesidades utilizar el tipo de datos DATETIME y utilizar los siguientes

java.util.Date date = new Date(); 
pst.setTimestamp(columIndex, new java.sql.Timestamp(date.getTime()).getTime()); 

Veamos el razonamiento tanto de la base de datos y jdbc side.

Comience desde el tipo de datos en la base de datos y elija el apropiado. El que mejor se adapte a su caso es DATETIME como desea la fecha y la hora/min/seg. El tipo DATETIME se usa para almacenar el tiempo del reloj de pared, mientras que TIMESTAMP es para un punto fijo en el tiempo (algunos milisegundos después de la época). También existe una diferencia en la forma en que ambos se almacenan internamente en MySQL.

Ahora Cuando se llega a la parte JDBC que tienen métodos de la API de Fecha (sólo parte de fecha), Marca de tiempo (fecha y hora) y la hora (única vez). Eso es todo lo que el JDBC tiene para ofrecer. Entonces, ahora, la API que se adapta a sus necesidades es setTimestamp