2010-07-28 59 views
11

Ho usato il seguente codice, ma il campo DateTime in SQL è rappresentato come:Come inserire la data e l'ora correnti in un database usando SQL?

2005-04-08 00:00:00 

voglio avere il tempo troppo. cosa dovrei cambiare?

Ecco il mio codice qui sotto:

// Get the system date and time. 
java.util.Date utilDate = new Date(); 
// Convert it to java.sql.Date 
java.sql.Date date = new java.sql.Date(utilDate.getTime()); 
... 
... 
... 
PreparedStatement stmt = connection.prepareStatement(sql); 
stmt.setDate(1, date); 
+1

Su Microsoft SQL-Server il modo più semplice per inserire le date correnti nei database è aggiungere un valore predefinito al campo DateTime (o SmallDateTime): getdate() –

risposta

11

Provare a utilizzare setTimestamp invece di setDate, dal momento che un timestamp è il formato preferito per i dati e tempo.

+3

java.sql.Date supporta solo il dat e, non tempo. Da javadoc - "Per conformarsi alla definizione di SQL DATE, i valori millisecondo avvolti da un java.sql.L'istanza della data deve essere 'normalizzata' impostando le ore, i minuti, i secondi e i millisecondi a zero nel particolare fuso orario con cui l'istanza è associata. " –

0

Prova utilizzando setDate (utilDate) invece di cercare di impostare la data SQL. In SQL, data e ora sono tipi di dati diversi.

2

Prova questa:

Connection con; 
Statement stmt; 
con = DriverManager.getConnection(url, username, password); 
stmt = con.createStatement(); 
stmt.executeUpdate("INSERT INTO MYTABLE(time) " + 
"VALUES ('" + new java.sql.Date(System.CurrentTimeMillis())"');"); 
1

utilizzare la funzione SQL ora().

INSERT INTO table date_field VALUES(NOW()); 
-1

In realtà, la data nel database è una stringa come "aaaa-mm-gg".

Perché non provare:

String date = "2010-07-28";

stmt.executeUpdate("INSERT INTO MYTABLE(time) " + s);

E 'solo per la data che si desidera.

Se si desidera inserire ora, utilizzare il comando come:

INSERT INTO mytable (ora());

4

è possibile impostare l'importazione Timestamp java.sql.Timestamp;

stmt.setTimestamp(1, new Timestamp(System.currentTimeMillis())); 

invece di

stmt.setDate(1, date); 

O/P sarà: 2014/05/16 08: 34: 52,977

impostare il vostro --column DB come timestamp.

0

ho come segue:

con = new BDConesion(); //Conexion with de DB 
Connection cn = con.conexion() 
PreparedStatement st = null; 
st = cn.prepareStatement("INSERT INTO TABLE (Id,Fecha,contendido) VALUES(?,?,?)"); 
st.setString(1,String.valueOf(key)); //convert the int to string 
st.setTimestamp(2, new Timestamp(System.currentTimeMillis())); 
st.setString(3,Cont);//Cont it is a varible string 
st.executeUpdate(); 

Spero che servono

1

non mi preoccuperei recuperare l'ora corrente in Java, solo lasciare che il database di fare il lavoro:

String sql = "insert into some_table (some_column, timestamp_column) values (?, current_timestamp)"; 
PreparedStatement stmt = connection.prepareStatement(sql); 
stmt.setInt(1, 42); 
stmt.executeUpdate(); 
Problemi correlati