我正在运行Oracle 10g并且具有Type_Name
的列TIMESTAMP(6) WITH TIME ZONE
当膨胀成java类时,它们就是
oracle.sql.TIMESTAMPTZ
但是DbUnit无法处理将Oracle特定类转换为Strings以写入XML。我想知道是否有任何简单的方法可以将这些Oracle特定时间戳转换为(例如,在我的SELECT语句中以某种方式)转换为java.sql中的某些内容。
答案 0 :(得分:1)
我没有必要完全处理这个问题,但是我认为从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
类。
答案 1 :(得分:1)
我想说的是,除非你真的想要获得ISO年份,否则使用IYYY作为年份的格式可能不是一个好主意。您应该使用YYYY而不是IYYY。
尝试使用
运行您的SQL for 31.12.2012select 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”,这不是您所期望的年份。