2010-07-28 21 views
11

He utilizado el siguiente código, pero el campo DateTime en SQL se representa como:¿Cómo insertar la fecha y hora actual en una base de datos usando SQL?

2005-04-08 00:00:00 

quiero tener el tiempo también. ¿Qué debería cambiar?

Aquí está mi código de abajo:

// 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

En Microsoft SQL-Server, la forma más sencilla de insertar fechas actuales en datatables es agregar un valor predeterminado al campo DateTime (o SmallDateTime): getdate() –

Respuesta

11

Intente utilizar setTimestamp en lugar de setDate, ya que una marca de tiempo es el formato preferido para los datos y tiempo.

+3

java.sql.Date solo admite el dat e, no el tiempo Desde el javadoc - "Para cumplir con la definición de SQL DATE, los valores de milisegundos envueltos por un java.sql.La instancia de fecha debe 'normalizarse' al establecer las horas, minutos, segundos y milisegundos en cero en la zona horaria particular a la que está asociada la instancia. " –

0

Trate de usar setDate (utilDate) en lugar de tratar de establecer la fecha de SQL. En SQL, la fecha y la hora son tipos de datos diferentes.

2

Prueba esto:

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

utilizar la función de SQL ahora().

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

En realidad, la fecha en la base de datos es una cadena como "aaaa-mm-dd".

¿Por qué no intentar:

String date = "2010-07-28";

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

es sólo por la fecha que desea.

Si desea insertar ahora, utilice el comando como:

INSERT INTO mitabla (ahora());

4

puede establecer Timestamp import java.sql.Timestamp;

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

en lugar de

stmt.setDate(1, date); 

O/P será: 05/16/2014 08: 34: 52,977

configurar su --column DB como marca de tiempo.

0

Yo como sigue:

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(); 

espero que te sirva

1

no me molestaría recuperar la hora actual en Java, simplemente dejar que la base de datos hacer el trabajo:

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