oracle.sql.TIMESTAMPTZ和标准的JDBC类之间转换的的DbUnit(Conver

2019-10-19 13:20发布

我运行Oracle 10g和与TYPE_NAME列

TIMESTAMP(6) WITH TIME ZONE

当膨胀成Java类,他们出来的

oracle.sql.TIMESTAMPTZ 

但DbUnit的无法处理转换的Oracle特定类字符串写入XML。 我想知道如果有对我来说,这些甲骨文的具体时间戳转换(比如,在我莫名其妙的SELECT语句)的东西java.sql中没有简单的方法。

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



Answer 2:

我想此话,使用IYYY作为格式全年可能不是一个好主意,除非你真的想要得到ISO的一年。 您应该使用YYYY代替IYYY的。

尝试使用到运行SQL为2012年12月31日

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”,这是不是你所期待的一年。



文章来源: Converting between oracle.sql.TIMESTAMPTZ and standard JDBC classes for DbUnit