24/04/2012 の形式の文字列日付を、後で Oracle データベースに渡すことができる 24-Apr-12 の形式の日付変数に変換するにはどうすればよいでしょうか。
私はこれを試しましたが、文字列の日付は解析できないと言います:
DateFormat format = new SimpleDateFormat("dd-MMM-yy");
Date newDate = (Date) format.parse(date);
解析とフォーマットを混同していると思います。これを試してください:
String old_date = "24/04/2012";
DateFormat old_format = new SimpleDateFormat("dd/MM/yyyy");
Date newDate = (Date) old_format.parse(old_date);
DateFormat new_format = new SimpleDateFormat("dd-MMM-yy");
String date = new_format.format(newDate);
System.out.println(date);
日付の形式は「dd/MM/yyyy」である必要があります
あなたはこれを逆にやっています:
DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date newDate = format.parse(date);
DateFormat formatOutput = new SimpleDateFormat("dd-MMM-yyyy");
String output = formatOutput.format(newDate);
しかし、日付を Oracle に渡す場合は、実際にはPreparedStatement
java.sql.Date を使ってみませんか。
例えば:
Date newDate = new java.sql.Date(date.getTime());
したがって、日付の一般的な sql オブジェクトを指定できます。
Java の Date クラスは非常に使いにくい場合が多いです。より優れたJoda Timeクラスの使用をお勧めします。
DateTimeFormatter oldFormat = DateTimeFormat.forPattern("dd/mm/yyyy");
DateTimeFormatter newFormat = DateTimeFormat.forPattern("dd-MMM-yy");
DateTime dateTime = oldFormat.parseDateTime("24/04/2012");
String newDate = newFormat.print(dateTime);
SimpleDateFormat sdf= new SimpleDateFormat("dd-MM-yy");
DateTime newDate = sdf.format(date);
試すDateFormat format = new SimpleDateFormat("dd/MM/yyyy")