2010-07-28 3 views
11

Я использовал следующий код, но поле DateTime в SQL представляется в виде:Как вставить текущую дату и время в базу данных с помощью SQL?

2005-04-08 00:00:00 

Я хочу, чтобы иметь время тоже. что я должен изменить?

Вот мой код ниже:

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

В Microsoft SQL-Server самым простым способом вставить текущие даты в datatables является добавление поля Default Value to DateTime (или SmallDateTime): getdate() –

ответ

11

Попробуйте использовать setTimestamp вместо SETDATE, так как отметка времени является предпочтительным форматом данных и времени.

+3

java.sql.Date поддерживает только данные е, а не время. Из javadoc - «Чтобы соответствовать определению SQL DATE, значения миллисекунд, завернутые java.sql.Экземпляр даты должен быть «нормализован», установив часы, минуты, секунды и миллисекунды на ноль в конкретном часовом поясе, с которым связан экземпляр ». –

0

Попробуйте использовать SETDATE (utilDate) вместо того, чтобы пытаться установить дату SQL. В SQL даты и время представляют собой разные типы данных.

2

Попробуйте это:

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

Используйте функцию SQL сейчас().

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

Фактически, дата в базе данных представляет собой строку типа «yyyy-mm-dd».

Почему бы не попробовать:

String date = "2010-07-28";

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

Это только для даты, которые вы хотите.

Если вы хотите вставить в настоящее время, используйте команду как:

INSERT INTO MyTable (теперь());

4

вы можете установить Timestamp import java.sql.Timestamp;

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

вместо

stmt.setDate(1, date); 

о/р будет: 2014-05-16 08: 34: 52,977

установить DB --column, как Timestamp.

0

я следующим образом:

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

Я надеюсь, что вы служите

1

Я бы не беспокоить получения текущего времени в Java, просто дайте базу данных сделать работу:

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