2008-10-21 68 views
1

我运行Oracle 10g和具有与列TYPE_NAMEoracle.sql.TIMESTAMPTZ和标准的JDBC类之间的转换为的DbUnit

TIMESTAMP(6) WITH TIME ZONE

当膨胀成他们出来为

oracle.sql.TIMESTAMPTZ

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

回答

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包括时区信息(在本例中没有任何信息)

然后,可以使用SimpleDateFormat类来解析Java。

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

1

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

尝试使用

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

返回运行为2012年12月31日SQL “2013-12-31 00:00:00.000000000” 您所期待的一年是不。