datetimetz
ABL タイプを表す DB フィールドにアクセスしようとしています。ドライバーResultSet.getTimestamp(int)
は[DataDirect][OpenEdge JDBC Driver]Value can not be converted to requested type.
.
私はすべての日付と時刻のゲッターを試しましたResultSet
が、どれも機能しませんでした。を呼び出すと、値を表すResultSet.getObject(int)
a が返されますString
が、この値は標準外の形式であり、実際には a で解析するのが難しい特異な形式でありSimpleDateFormat
、この形式は " 2013-03-08 21:55:10:903 + 11:00
" のようになります。
+/-
この風変わりな日付から、タイムゾーン修飾子の後のスペースのためにフォーマット文字列できれいに解析できず、次の醜い方法に頼らなければなりませんでした:
String r = rs.getString(col);
if (r == null) {
return null;
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSSXXX",
Locale.getDefault());
try {
return df.parse(r.substring(0, 23)
+ r.substring(24, 25)
+ r.substring(26));
} catch (ParseException ex) {
return null;
}
OpenEdge 10.1.C04 を使用しています