在oracle.Sql.TIMESTAMPTZ和DbUnit的标准JDBC类之间进行转换
题
我正在运行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.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"这不是你期望的那一年。
不隶属于 StackOverflow