我正在运行Oracle 10g并且具有Type_Name

的列
TIMESTAMP(6) WITH TIME ZONE

当膨胀成java类时,它们就是

oracle.sql.TIMESTAMPTZ 

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

有帮助吗?

解决方案

我没有必要完全处理这个问题,但我认为将它作为SELECT查询中的字符串来完成会很好。

您可以使用 to_char 功能。将其转换为字符串。 e.g:

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 类。

其他提示

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

尝试使用

运行您的SQL for 31.12.2012
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"这不是你期望的那一年。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top