我运行Oracle 10g和具有与列TYPE_NAMEoracle.sql.TIMESTAMPTZ和标准的JDBC类之间的转换为的DbUnit
TIMESTAMP(6) WITH TIME ZONE
当膨胀成他们出来为
oracle.sql.TIMESTAMPTZ
java类但DbUnit无法处理将Oracle特定类转换为字符串以写入XML。我想知道是否有任何简单的方法可以将这些Oracle特定时间戳(例如,在我的SELECT语句中)以某种方式转换为java.sql中的某些内容。
我运行Oracle 10g和具有与列TYPE_NAMEoracle.sql.TIMESTAMPTZ和标准的JDBC类之间的转换为的DbUnit
TIMESTAMP(6) WITH TIME ZONE
当膨胀成他们出来为
oracle.sql.TIMESTAMPTZ
java类但DbUnit无法处理将Oracle特定类转换为字符串以写入XML。我想知道是否有任何简单的方法可以将这些Oracle特定时间戳(例如,在我的SELECT语句中)以某种方式转换为java.sql中的某些内容。
我还没有完全处理这个问题,但我认为,它通过从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
类。
我想说,使用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” 您所期待的一年是不。