У меня есть одна таблица в базе данных postgresql (версия движка 10.11) со столбцом с именем resettime, который имеет тип данных как timestamptz. Часовой пояс по умолчанию для базы данных — Австралия/Сидней.
Столбец resettime имеет значение по умолчанию как timezone('UTC'::text, now()).
Я выполнил следующую команду, чтобы установить этот столбец в DBEaver.
update mytable set resettime = timezone('UTC', now()) + interval '1 hour' where id = 1;
Текущее время UTC – 11:47
, соответствующее время AEST – 21:47
.
После выполнения приведенного выше оператора я попытался получить время сброса с помощью следующего оператора в DBEaver.
select resettime from mytable where id=1
Из этого заявления я получил 2020-09-14 12:47:25
.
Затем я запускаю следующую команду в DBEaver.
update mytable set resettime = resettime + interval '1 hour' where resettime < timezone('UTC', now());
После запуска этой команды я проверяю время сброса для записи с id=1, я обнаружил, что время сброса было сохранено, как я и ожидал. Это нормально.
Однако, когда я запустил тот же оператор обновления в своем приложении scala, он обновил время сброса как 2020-09-14 13:47:25
. У меня такое ощущение, что время сброса по-прежнему считается временем AEST, если я получил к нему доступ через приложение scala. Я не хочу менять настройки часового пояса по умолчанию на UTC.
Как я должен убедиться, что мое приложение scala также ведет себя так же, как мой доступ через DBEaver? В приведенном выше примере я надеюсь, что время сброса не будет изменено моим приложением scala для запуска того же оператора обновления. Спасибо!