我正在运行 Oracle 10g 并有带有 Type_Name 的列
带有时区的时间戳(6)
当膨胀成java类时,它们会变成
oracle.sql.TIMESTAMPTZ
但是 DbUnit 无法处理将 Oracle 特定类转换为字符串以写入 XML。我想知道是否有任何简单的方法可以让我将这些 Oracle 特定时间戳(例如,在我的 SELECT 语句中)从这些 Oracle 特定时间戳转换为 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
包括时区信息(本例中没有时区信息)
稍后,Java 可以使用SimpleDateFormat类对其进行解析。
或者,oracle.sql.TIMESTAMPTZ类有一个调用方法,该方法dateValue
返回一个java.sql.Date
类。
我想指出,除非您真的想获得 ISO 年份,否则使用 IYYY 作为年份格式可能不是一个好主意。您应该使用 YYYY 而不是 IYYY。
尝试使用 31.12.2012 运行您的 SQL
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”,这不是您期望的年份。