Oracle отметка времени java -внесенные значения VS sql -стат-обновления значений - PullRequest
0 голосов
/ 28 марта 2020

Я столкнулся со следующим странным поведением, которое я просто не могу обернуть головой:

example

У меня есть unix -временная отметка в миллисекунды в левом столбце. Я хотел иметь столбец, содержащий то же значение, но в формате Oracle Timestamp для лучшей читаемости и утилит, которые приходят из этого формата. Поэтому я добавил столбец отметки времени, который вы видите справа

У меня есть программа Java, которая импортирует данные. Для новых данных я вставляю новый java.sql.Timestamp (миллисекунды). Перед этим я выполнил следующий оператор SQL, чтобы обновить существующие столбцы в БД:

UPDATE custom c
SET c.EVENT_TIMESTAMP = (TO_TIMESTAMP('1970-01-01 00:00:00.000', 'YYYY-MM-DD hh24:mi:SS.FF')
                          +(NUMTODSINTERVAL(c.EVENT_TIME/1000,'SECOND')))

Проблема, с которой я столкнулся сейчас, заключается в следующем:

Метки времени, которые были обновлены с помощью * Оператор 1027 * имеет время, отображаемое в столбце отметки времени, которое соответствует ut c времени оставшегося столбца миллисекунд. Но метки времени, вставленные через новый java .sqlTimestamp (миллисекунды), имеют время, отображаемое в столбце меток времени, которое соответствует времени в миллисекундах в utc + 1.

время клиента моего клиента sql является ut c, поэтому отображаемые значения в столбце Timestamp также должны отображаться в ut c. Я попытался изменить часовой пояс клиента, чтобы посмотреть, будет ли он автоматически отображать мне время в этом часовом поясе, но отображаемое время осталось прежним. Поэтому я предполагаю, что это отображается в ut c в моем клиенте. Это означает, что оператор sql работал правильно. Таким образом, введенные значения через java неверны. Насколько я знаю, стандартный формат отметки времени oracle также не хранит информацию о часовом поясе, поэтому это тоже не объясняется.

Я вообще не понимаю, может быть, кто-то может помочь.

привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...