0

我们正在开发处理数据库的 Spring Boot Hibernate 应用程序。我们将数据库表备份为 csv 格式。在备份包含TIMESTAMP WITH TIME ZONE列的 Oracle 11g 表时,我们面临一些问题,因为这种类型的值可以有两种类型:

  • 时区偏移 ->2003-01-01 02:00:00.0 -7:00
  • 时区区域名称 ->2000-02-29 03:32:22.016 America/Yellowknife

我们正在使用 apache 元模型来解析 CSV 以恢复到另一个 Oracle 数据库表。

导出的 CSV 中的时间戳列:

"Col_TimeStampTimeZone" 
"2016-04-07 08:42:20.828 Asia/Calcutta" 
"2003-01-01 02:00:00.0 -7:00"

我们已经尝试了许多使用 SimpleDateFormat、Date、Calendar 进行转换的方法,但我们无法完全恢复它保存在源数据库表中的样子。

我们已经尝试过这里给出的解决方案:Convert `Java.lang.String` TO `oracle.sql.TIMESTAMPTZ`

此代码在 Windows 操作系统上运行良好。它以时区区域格式根据本地时区进行转换。但是相同的代码在 Ubuntu 操作系统上不起作用。它将UTC中的值转换为:

07-APR-16 03.12.20.828000000 AM UTC
01-JAN-03 09.00.00.000000000 AM UTC

但我希望它们恢复为带有时区区域或时区偏移量的时间戳(任何一种但相同的格式)。

我们不想将错误的日期松散并保存到恢复的数据库表中,需要确切地知道它在源表中的内容。

4

0 回答 0