una - Cómo almacenar la fecha de Java en Mysql datetime...?
tipo date mysql java (11)
¿Quizás estés usando java.sql.Date
? Si bien eso tiene una granularidad de milisegundos como una clase de Java (es una subclase de java.util.Date
, mala decisión de diseño), el controlador JDBC lo interpretará como una fecha sin un componente de tiempo. En su lugar, debe usar java.sql.Timestamp
.
¿Puede alguien decirme cómo puedo almacenar Java Date en Mysql datetime ...?
Cuando intento hacerlo ... solo se almacena la fecha y el tiempo permanece 00:00:00 en las tiendas de fecha Mysql como esta ...
2009-09-22 00:00:00
No solo quiero fecha, sino también tiempo ... como
2009-09-22 08:08:11
Estoy usando JPA (Hibernate) con clases mydomain de primavera usa java.util.Date pero he creado tablas usando consultas manuscritas ...
esta es mi declaración de crear
CREATE TABLE ContactUs (id BIGINT auto_increment,
userName VARCHAR(30),
email VARCHAR(50),
subject VARCHAR(100),
message VARCHAR(1024),
messageType VARCHAR(15),
contactUsTime datetime,
primary key(id))
TYPE=InnoDB;
Anota tu campo (o getter) con @Temporal(TemporalType.TIMESTAMP)
, así:
public class MyEntity {
...
@Temporal(TemporalType.TIMESTAMP)
private java.util.Date myDate;
...
}
Eso debería hacer el truco.
En realidad, no puedes usar SimpleDateFormat, puedes usar algo como esto;
@JsonSerialize(using=JsonDateSerializer.class)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm:ss")
private Date blkDate;
De esta forma, puede obtener directamente la fecha con el formato especificado.
Probablemente porque su fecha de Java tiene un formato diferente del formato de mysql format
( YYYY-MM-DD HH:MM:SS
)
hacer esto
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date));
Su muy simple aunque las condiciones en esta respuesta están en mysql el tipo de datos de columna es datetime y desea enviar datos de código java a mysql:
java.util.Date dt = new java.util.Date ();
whatever your code object may be
.setDateTime (dt);
Lo importante es simplemente elegir la fecha y su formato ya está en formato mysql y enviarlo, no se requieren modificaciones adicionales.
Use el siguiente código para insertar la fecha en MySQL. En lugar de cambiar el formato de nuestra fecha para cumplir con los requisitos de MySql, podemos ayudar a la base de datos a reconocer nuestra fecha estableciendo los parámetros STR_TO_DATE(?, ''%l:%i %p'')
.
Por ejemplo, 2014-03-12 se puede representar como STR_TO_DATE(''2014-03-12'', ''%Y-%m-%d'')
preparedStatement = connect.prepareStatement("INSERT INTO test.msft VALUES (default, STR_TO_DATE( ?, ''%m/%d/%Y''), STR_TO_DATE(?, ''%l:%i %p''),?,?,?,?,?)");
esto funciona para mi !!
en la tabla mysql
DATETIME
en entidad:
private Date startDate;
en proceso:
objectEntity.setStartDate(new Date());
en estado preparado:
pstm.setDate(9, new java.sql.Date(objEntity.getStartDate().getTime()));
mysql datetime -> GregorianCalendar
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse("2012-12-13 14:54:30"); // mysql datetime format
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
System.out.println(calendar.getTime());
GregorianCalendar -> mysql datetime
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string = format.format(calendar.getTime());
System.out.println(string);
obtendrás formato de tiempo 2011-07-18 +
long timeNow = Calendar.getInstance().getTimeInMillis();
java.sql.Timestamp ts = new java.sql.Timestamp(timeNow);
...
preparedStatement.setTimestamp(TIME_COL_INDEX, ts);
ver en el enlace:
coderanch.com/t/304851/JDBC/java/…
El siguiente código simplemente resolvió el problema:
java.util.Date dt = new java.util.Date();
java.text.SimpleDateFormat sdf =
new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = sdf.format(dt);
Este ''tiempo actual '' se insertó en la columna cuyo tipo era DateTime y fue exitoso.
java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());
preparedStatement.setObject(param);