2010-07-28 21 views
11

tôi đã sử dụng đoạn mã sau, nhưng lĩnh vực DateTime trong SQL được biểu diễn dưới dạng:Làm cách nào để chèn ngày và giờ hiện tại vào cơ sở dữ liệu bằng SQL?

2005-04-08 00:00:00 

Tôi muốn có thời gian quá. Tôi nên thay đổi điều gì?

Đây là mã của tôi dưới đây:

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

Trên Microsoft SQL-Server, cách dễ nhất để chèn ngày hiện tại vào datatables là thêm một giá trị mặc định vào DateTime (hoặc SmallDateTime): getdate() –

Trả lời

11

Hãy thử sử dụng setTimestamp thay vì setDate, vì một dấu thời gian là định dạng ưa thích cho dữ liệu thời gian.

+3

java.sql.Date chỉ hỗ trợ dat e, không phải thời gian. Từ javadoc - "Để phù hợp với định nghĩa của SQL DATE, các giá trị mili giây được bao bọc bởi một java.sql.Ví dụ ngày phải được 'chuẩn hóa' bằng cách đặt giờ, phút, giây và mili giây thành 0 trong múi giờ cụ thể mà cá thể được liên kết. " –

0

Hãy thử sử dụng setDate (utilDate) thay vì cố gắng để thiết lập ngày SQL. Trong SQL, ngày tháng và thời gian là các kiểu dữ liệu khác nhau.

2

Hãy thử điều này:

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

Sử dụng chức năng sql now().

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

Thực tế, ngày trong cơ sở dữ liệu là chuỗi như "yyyy-mm-dd".

Tại sao không thử:

String date = "2010-07-28";

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

Nó chỉ cho ngày mà bạn muốn.

Nếu bạn muốn chèn ngay bây giờ, hãy sử dụng lệnh như:

INSERT INTO mytable (now());

4

bạn có thể đặt Dấu thời gian nhập java.sql.Timestamp;

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

thay vì

stmt.setDate(1, date); 

o/p sẽ là: 2014/05/16 08: 34: 52,977

thiết --column DB của bạn như Timestamp.

0

tôi như sau:

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

Tôi hy vọng bạn phục vụ

1

tôi sẽ không bận tâm lấy thời gian hiện tại trong Java, chỉ cần cho cơ sở dữ liệu thực hiện công việc:

String sql = "insert into some_table (some_column, timestamp_column) values (?, current_timestamp)"; 
PreparedStatement stmt = connection.prepareStatement(sql); 
stmt.setInt(1, 42); 
stmt.executeUpdate(); 
Các vấn đề liên quan