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

私はテーブルに挿入するために、日付の種類にcalを変換したいと思います。カレンダーをJavaのjava.sql.Dateに変換するには?

+0

おそらくあなたは 'java.sql.Date'ではなく' java.util.Date'を望んでいましたか? – ArtB

答えて

108

getTimeメソッドがあります(なぜそれがgetDateと呼ばれているのかわかりません)。

編集:ちょうどあなたがjava.sql.Dateが必要であることを理解しました。 cal.getTimeInMillis()を使用する回答の1つが必要なものです。

26

cal.getTime()を試しましたか?これは、日付表現を取得します。

また、javadocを参照することもできます。

+0

はい、私は(Date)でキャストする必要があります。 – Alex

+0

これは、java.sql.Date(James Jithin氏のように)が必要で、Calendar.getTime()がjava.util.Dateを提供するからです。 –

24

使用stmt.setDate(1, new java.sql.Date(cal.getTimeInMillis()))

9

の変換日付と時刻を設定すると、少しトリッキーです、簡単です。ここでは例です:

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

私は、このコードは動作しますが見つかりました:

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

このチュートリアルで残りの部分を見つけることができます:ここでは
http://www.mkyong.com/java/java-date-and-calendar-examples/

6

はにCalendar値を変換する簡単な方法ですDateインスタンス。

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

Date DD = C.getTime(); 

System.out.println(DD); 
+0

java.sql.Dateについて質問されました。 java.util.Dateを前提としたこのような答えがいくつかあります。もちろん、これらの名前を付けることは愚かな考えであると言う人もいます。 – Charles

1

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

関連する問題