具有相同数据的两个数据库,报告时间不同

Two databases with the same data, are reporting different times

我住在亚利桑那州,如果重要的话没有夏令时。

我有两个不同的 Oracle 数据库,用于存储假期和周末的列表。 存储数据的列是DATE格式,没有时间值。

但是当我使用 API 为 2021 年 1 月的假期调用第一个数据库时,它会在午夜报告假期日期。但是当我在第二个数据库上调用 2021 年 1 月的所有假期时,它报告所有假期日期为早上 7 点。

数据库使用的查询是

SELECT *  FROM CLPUSER.HOL_DT WHERE TRIM(HOL_DT) >= ? AND  TRIM(HOL_DT) <= ?";

API 在调用数据库时使用 Vertx-jdbc。我仔细检查了 API 和数据库的配置,都在使用 MST。

这是从 API 调用

返回的值

DB1

"publicHolidayList": [

"holidayDate": "2021-01-01T00:00:00Z",
"holidayDate": "2021-01-02T00:00:00Z",
"holidayDate": "2021-01-03T00:00:00Z"
...
]

DB2

"publicHolidayList": [
"holidayDate": "2021-01-02T07:00:00Z",
"holidayDate": "2021-01-03T07:00:00Z"
...
"holidayDate": "2021-01-01T07:00:00Z" //appears at bottom
]

编辑:刚刚通过代码调试,直到我知道 vertx jdbc 如何从带下划线的 JDBC 库中读取它,它正在从 [=36= 中读取 HOL_DT ] 作为时间戳,当数据库将其存储为日期格式时。当它这样做时,它转换为 UTC 的 ZoneDateTime,给出它的时间值。

原来有些不一样。在一个环境中重新部署代码时,它开始像另一个环境一样显示“2021-01-02T07:00:00Z”。我的工作理论是,出于某种原因,pods 之一被设置为 UTC 时间,但现在是 MST 时间。

此外,整个条目乱序是因为它没有按功能排序,当我在 Oracle 中插入所有这些时,我忘记了第一个条目,它被放在最后。

¯\_(ツ)_/¯