2010-09-09 10 views
23

Sto provando a impostare un timestamp nel mio database usando java, tuttavia nella mia tabella tutto ciò che ottengo è la data, e non c'è tempo (ad esempio, sembra "2010-09-09 00:00:00").Come si imposta una data e ora complete sql utilizzando java e non solo la data?

Sto usando un campo datetime sul mio database mysql (perché è appears che datetime is more common than timestamp). Il mio codice per impostare la data è il seguente:

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)") 
java.util.Date today = new java.util.Date(); 
java.sql.Date timestamp = new java.sql.Date(today.getTime()); 
ps.setDate(1, timestamp); 
ps.executeUpdate(); 

Come impostare la data per includere l'ora?

Modifica: Ho modificato il codice come di seguito e imposta sia la data che l'ora.

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)") 
java.util.Date today = new java.util.Date(); 
java.sql.Timestamp timestamp = new java.sql.Timestamp(today.getTime()); 
ps.setTimestamp(1, timestamp); 
ps.executeUpdate(); 

risposta

28

Usa java.sql.Timestamp e setTimestamp(int, Timestamp). java.sql.Date è data solo, indipendentemente dal tipo di colonna è essere memorizzato in.

4
Non

esattamente sicuro di quello che è necessario utilizzare, ma

ps.setDate(); 

aspetta un tipo di colonna di Data. Quindi lo sta normalizzando, rimuovendo il tempo.

Prova

ps.setTimetamp(); 
-3

Si potrebbe utilizzare:

private static String getTimeStamp() { 
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    return f.format(new Date()); 
} 
+2

Non si dovrebbe trattare con i formati di stringa per date/orari in cui salvarli o leggerli da un database. Le astrazioni di JDBC come 'setTimestamp' e' getTimestamp' sono lì per renderlo inutile. – ColinD

+0

thx, ho letto male e non ho notato sql. Errore mio – oyo