【发布时间】:2020-09-09 10:32:00
【问题描述】:
在 Oracle 中向表中插入记录时,创建日期列中的时间戳为 UTC 下午 4 点(完整格式,例如...2020-05-20 10:30:20.15 UTC)。这甚至在调用 Mybatis 的 save 方法之前就得到了验证。调用 save 方法后,DB 中新记录中的创建日期列没有 UTC 作为时间。它显示下午 4 点亚洲/加尔各答。时间戳的数字部分正确,但时区已更改。
我们的代码在 Spring 框架中 - mybatisMapper.save(events) .. events POJO 中的 created_date 列是 java.util.Date 类型。 我们正在尝试在蒙特利尔托管的数据库中插入一条记录。 从对偶中选择 dbtimezone; 服务器的 DBtimezone - -04:00 表示美国/蒙特利尔时区(托管在美国/蒙特利尔)
从双重中选择会话时区; 会话时区 - 亚洲/加尔各答。(因为应用程序在印度运行)。
创建日期列的数据类型为TIME STAMP WITH TIMEZONE。 mybatis 是在随意更改时区,还是完全放弃它并让 Oracle 自己决定时区?
【问题讨论】:
-
在时区之上,我会检查
locale。你能检查一下本地系统和数据库主机上的那个吗? -
语言环境?数据库语言环境?不知道这件事。这一切可能的原因是什么?你能详细说明一下语言环境是如何造成问题的吗?
-
并非每个国家/地区都有夏令时,如果设置错误可能会导致问题。我也支持 Basil Bourque 并且会摆脱 java.util.Date
-
即使在尝试了 OffsetDateTime 之后,问题仍然存在。可能是什么原因?
标签: java oracle mybatis spring-mybatis timestamp-with-timezone