4

我正在尝试访问代表datetimetzABL 类型的数据库字段。我试过ResultSet.getTimestamp(int)哪个应该是正确的,尽管司机抱怨[DataDirect][OpenEdge JDBC Driver]Value can not be converted to requested type.

ResultSet我已经尝试了所有没有工作的日期和时间获取器。调用ResultSet.getObject(int)返回 aString表示该值,但是该值是一种非标准格式,它实际上有一个怪癖,因此很难用 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 回答