Две базы данных с одинаковыми данными сообщают разное время - PullRequest
0 голосов
/ 11 февраля 2020

Я живу в Аризоне, MST без DST, если это имеет значение.

У меня есть две разные Oracle Базы данных, в которых хранится список праздников и выходных. Столбец, в котором хранятся данные, имеет формат DATE, без значения времени.

Но когда я использую API, чтобы вызвать первый дБ для праздников в январе 2021 года, он сообщает дату праздника в полночь. Но когда я вызываю все праздники в январе 2021 года на втором БД, он сообщает, что в качестве даты всех праздников 7 утра.

Запрос, который использует БД:

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

используя Vertx-jdb c при вызове базы данных. Я дважды проверил конфигурацию 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 jdb c читает его из подчеркивающей библиотеки JDB C, он читает HOL_DT из jdb c как TIMESTAMP, когда БД хранит его как формат даты. Когда он это делает, он конвертируется в ZoneDateTime в UT C, давая его значение времени.

1 Ответ

0 голосов
/ 13 февраля 2020

Оказывается, что-то было по-другому. При повторном развертывании кода в одной среде он начал показывать «2021-01-02T07: 00: 00Z», как и другая. Моя рабочая теория заключается в том, что по какой-то причине один из модулей был настроен на время UT C, но теперь во время MST.

Кроме того, одна запись не работала из-за отсутствия сортировки по функции, и когда я вставил все это в Oracle, я забыл первую запись, и она была завершена.

¯ \ _ (ツ) _ / ¯

...