Come conservare Java Date to Mysql datetime …?

Qualcuno può dirmi come posso archiviare Java Date in Mysql datetime …?

Quando sto provando a farlo … solo la data viene memorizzata e il tempo rimane 00:00:00 in data Mysqi memorizza come questo …

2009-09-22 00:00:00 

Voglio non solo la data, ma anche il tempo … come

 2009-09-22 08:08:11 

Sto usando JPA (Hibernate) con le classi di spring mydomain utilizza java.util.Date ma ho creato tabelle utilizzando query scritte a mano …

questa è la mia dichiarazione di creazione

 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; 

vedi nel link:

http://www.coderanch.com/t/304851/JDBC/java/Java-date-MySQL-date-conversion

Il seguente codice ha appena risolto il 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); 

Questo ‘ currentTime ‘ è stato inserito nella colonna il cui tipo era DateTime e ha avuto successo.

Annota il tuo campo (o getter) con @Temporal(TemporalType.TIMESTAMP) , in questo modo:

 public class MyEntity { ... @Temporal(TemporalType.TIMESTAMP) private java.util.Date myDate; ... } 

Questo dovrebbe fare il trucco.

Stai forse usando java.sql.Date ? Sebbene abbia una granularità al millisecondo come una class Java (è una sottoclass di java.util.Date , una decisione di progettazione errata), verrà interpretata dal driver JDBC come una data senza un componente orario. Devi usare java.sql.Timestamp invece.

Probabilmente perché la tua data java ha un formato diverso dal formato mysql format ( YYYY-MM-DD HH:MM:SS )

Fai questo

  DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date date = new Date(); System.out.println(dateFormat.format(date)); 

riceverai il formato dell’ora 2011-07-18 +

 long timeNow = Calendar.getInstance().getTimeInMillis(); java.sql.Timestamp ts = new java.sql.Timestamp(timeNow); ... preparedStatement.setTimestamp(TIME_COL_INDEX, ts); 

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); 
 java.util.Date date = new Date(); Object param = new java.sql.Timestamp(date.getTime()); preparedStatement.setObject(param); 

Utilizzare il seguente codice per inserire la data in MySQL. Invece di modificare il formato della nostra data per soddisfare i requisiti di MySql, possiamo aiutare il data base a riconoscere la nostra data impostando i STR_TO_DATE(?, '%l:%i %p') .

Ad esempio, 2014-03-12 può essere rappresentato come 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'),?,?,?,?,?)"); 

In realtà non è ansible utilizzare SimpleDateFormat, è ansible utilizzare qualcosa come questo;

  @JsonSerialize(using=JsonDateSerializer.class) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm:ss") private Date blkDate; 

In questo modo è ansible ottenere direttamente la data con il formato specificato.

Le sue condizioni molto semplici in questa risposta sono in mysql il datatype della colonna è datetime e si desidera inviare dati dal codice java a mysql:

java.util.Date dt = new java.util.Date ();
whatever your code object may be .setDateTime (dt);

la cosa importante è semplicemente scegliere la data e il suo formato è già secondo il formato mysql e inviarlo, non sono necessarie ulteriori modifiche.

per me funziona !!

nella tabella mysql

 DATETIME 

nell’ quadro:

 private Date startDate; 

in corso:

 objectEntity.setStartDate(new Date()); 

in preparazioneStato:

 pstm.setDate(9, new java.sql.Date(objEntity.getStartDate().getTime()));