2

我正在运行 Oracle 10g 并有带有 Type_Name 的列

带有时区的时间戳(6)

当膨胀成java类时,它们会变成

oracle.sql.TIMESTAMPTZ

但是 DbUnit 无法处理将 Oracle 特定类转换为字符串以写入 XML。我想知道是否有任何简单的方法可以让我将这些 Oracle 特定时间戳(例如,在我的 SELECT 语句中)从这些 Oracle 特定时间戳转换为 java.sql 中的某些内容。

4

2 回答 2

1

我不必完全处理这个问题,但我认为将它作为 SELECT 查询中的字符串通过就可以了。

您可以使用to_char函数。将其转换为字符串。例如:

SQL> select to_char(systimestamp, 'YYYY-MM-DD HH24:MI:SS.FF TZD') as d from dual;

D
----------------------------------
2008-10-21 17:00:43.501591

然后,您的程序会将其视为字符串。TZD包括时区信息(本例中没有时区信息)

稍后,Java 可以使用SimpleDateFormat类对其进行解析。

或者,oracle.sql.TIMESTAMPTZ类有一个调用方法,该方法dateValue返回一个java.sql.Date类。

于 2008-10-21T21:04:04.260 回答
1

我想指出,除非您真的想获得 ISO 年份,否则使用 IYYY 作为年份格式可能不是一个好主意。您应该使用 YYYY 而不是 IYYY。

尝试使用 31.12.2012 运行您的 SQL

select to_char(timestamp'2012-12-31 00:00:00 +00:00', 'IYYY-MM-DD HH24:MI:SS.FF TZD') as d from dual;

返回“2013-12-31 00:00:00.000000000”,这不是您期望的年份。

于 2011-10-12T14:18:57.753 回答