2012-05-25 8 views
8

Ho una data JDBC data e ora inserire nel database Mysql.Datetime in java

Sottopone la data corrente e un orario fisso nel campo del tipo di data Mysql come 2012/05/25 00:00:00. La parte di data funziona molto bene ma il tempo non mostra alcun valore.

sto inserendo il valore con il seguente codice:

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

Puoi incollare il codice che inserisce la data? Che tipo di colonna hai usato nel database? – pablochan

+0

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

+0

Qual è il tipo di colonna in MySQL? – dbf

risposta

1

1) Utilizzare java.util.Date nella classe java.

2) Impostare datatye TIMESTAMP in mysql.

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

Per PreparedStatement: Può essere come questo:

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

Quale dovrebbe essere la dichiarazione preparata per questo data data – Narayan

+3

Non ha funzionato per me perché perde tempo. Utilizzare java.sql.Timestamp invece con setTimestamp (...) –

2

penso che è necessario disporre di timestamp come tipo di colonna in MySQL.

+0

DATETIME può andare bene – bpgergo

16

Uso java.sql.Timestamp invece di java.util.Date

Per esempio, se si utilizza PreparedStatement per gestire il vostro inserto, si può passare la data come ;

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

+1: Il problema è che 'java.sql.Date' è * specificatamente * solo una data, quindi elimina il componente orario. –

+0

Mostra errore quando ho provato a eseguire l'istruzione di inserimento, cioè mostra errore quando uso pstmt.executeupdate(); – Narayan

+0

Non hai specificato l'errore che stai ricevendo, presumo che richieda il lungo come parametro - vedi la risposta modificata. – Bitmap

1

Anche se un vecchio post, la risposta è semplice e dipende dalla vostra esigenza - secondo le vostre esigenze usare il tipo di dati datetime e utilizzare i seguenti

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

Vediamo il ragionamento sia dal database e lato jdbc.

Iniziare dal tipo di dati nel database e selezionarne uno appropriato. Quello che si adatta esattamente al tuo caso è DATETIME come vuoi data e ora/min/sec. Il tipo DATETIME viene utilizzato per memorizzare l'ora dell'orologio a muro mentre TIMESTAMP è per un punto fisso nel tempo (alcuni millisecondi dopo l'epoca). C'è anche una differenza nel modo in cui entrambi sono memorizzati internamente in MySQL.

Ora Quando si giunge al lato JDBC sono disponibili i metodi API per Data (solo data parte), Timestamp (data e ora) e Ora (solo ora). Questo è tutto ciò che la JDBC ha da offrire. Quindi ora l'API adatta alle tue esigenze è setTimestamp

Problemi correlati