2012-02-02 24 views
50
Calendar cal; 
String sql = "INSERT INTO ttable (dt) values (?);" 
//dt is a dateTime field in ttable 

PreparedStatement stmt = connection.prepareStatement(sql); 

stmt = setDate(1,cal); //not working 

stmt.execute(); 
stmt.close(); 

Tôi muốn chuyển đổi cal thành loại Ngày để chèn vào bảng.Làm thế nào để chuyển đổi Lịch sang java.sql.Date trong Java?

+0

lẽ bạn muốn 'java.sql.Date' và không' java.util.Date'? – ArtB

Trả lời

108

Có phương thức getTime (không chắc chắn lý do tại sao nó không được gọi là getDate).

Chỉnh sửa: Chỉ cần nhận ra bạn cần java.sql.Date. Một trong những câu trả lời sử dụng cal.getTimeInMillis() là những gì bạn cần.

26

Bạn đã thử cal.getTime()? Điều này được đại diện ngày.

Bạn cũng có thể muốn xem javadoc.

+0

Có, nhưng tôi vẫn cần phải đúc với (Ngày). – Alex

+0

Đó là bởi vì bạn cần một java.sql.Date (như James Jithin nói) và Calendar.getTime() cung cấp cho bạn một java.util.Date. –

24

Sử dụng stmt.setDate(1, new java.sql.Date(cal.getTimeInMillis()))

9

Chuyển đổi dễ dàng, thiết lập ngày và thời gian là một chút khéo léo. Dưới đây là một ví dụ:

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.YEAR, 2000); 
cal.set(Calendar.MONTH, 0); 
cal.set(Calendar.DAY_OF_MONTH, 1); 
cal.set(Calendar.HOUR_OF_DAY, 1); 
cal.set(Calendar.MINUTE, 1); 
cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); 
stmt.setDate(1, new java.sql.Date(cal.getTimeInMillis())); 
1

tôi tìm thấy mã này hoạt động:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss");  
Calendar calendar = new GregorianCalendar(2013,0,31); 
System.out.println(sdf.format(calendar.getTime())); 

bạn có thể tìm thấy phần còn lại trong hướng dẫn này:
http://www.mkyong.com/java/java-date-and-calendar-examples/

6

Đây là một cách đơn giản để chuyển đổi Calendar giá trị vào Date trường hợp.

Calendar C = new GregorianCalendar(1993,9,21); 

Date DD = C.getTime(); 

System.out.println(DD); 
+0

Câu hỏi được hỏi cụ thể về java.sql.Date. Có một số câu trả lời như thế này, tất cả đều giả sử java.util.Date. Tất nhiên, một số sẽ nói đặt tên những điều tương tự là một ý tưởng ngu ngốc. – Charles

1

stmt.setDate(1, new java.sql.Date(cal.getTime().getTime()));

Các vấn đề liên quan