4

datetimetzABL タイプを表す 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 を使用しています

4

1 に答える 1

0

残念ながら、TIMESTAMP WITH TIME ZONE 値をタイムスタンプとして取得することはサポートされていません

于 2015-05-08T07:09:30.517 に答える