Как правильно установить часовой пояс в формате UTC, чтобы все метки времени правильно сохранялись и извлекались в этом формате? - PullRequest
1 голос
/ 26 июня 2019

В моем проекте весенней загрузки (2.1.4) у меня есть база данных mysql (5.7.21 - версия сервера) и следующие свойства приложения:

spring.datasource.url=jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC

и

hibernate.jdbc.time-zone=UTC.

Теперь, когда я сохраняю записи прав доступа с помощью @CreationTimestamp с использованием java (либо с помощью @PostConstruct, либо с помощью некоторой логики контроллера / службы), даты корректно преобразуются в UTC часовой пояс и сохраняются в базе данных, а также извлекаютсяв формате UTC (как я хочу, чтобы они были).Однако, когда я добавляю (другие) записи через файл data.sql.Соответствующие поля меток времени также имеют часовой пояс UTC, но на этот раз время не конвертируется должным образом в UTC (это просто мое текущее время с часовым поясом, установленным в UTC).

Как правильно настроить его для обеих ситуаций, чтобы всегда преобразовывать местное время в UTC, сохранять его и всегда извлекать его как UTC из базы данных?

Следует изменитьГлобальный часовой пояс mysql решает проблему?

Пример:

Я нахожусь в часовом поясе: GMT + 2 Для записей, сохраненных в 11:11:53, установлено следующее время:

1.) Java создал записи: 09: 11: 53

2.) Data.sql создал записи: 11: 11: 53

Оба находятся в часовом поясе UTC (я вижуэто, когда выборка в клиенте), но только первое правильно.

1 Ответ

1 голос
/ 26 июня 2019

Установка глобального часового пояса в UTC устранила проблему (все временные метки теперь установлены на UTC , отображаются в моем местном времени в базе данных, но возвращаются как UTC из базы данных), что удовлетворяет моим условиям и унифицировано как для java, так и data.sql исходных записей.

Чтобы сделать это в Windows, мне пришлось скачать файл часовых поясов отсюда: https://dev.mysql.com/downloads/timezones.html

и запустите:

mysql -D mysql -uroot -pmypassword < timezone_posix.sql
SET @@global.time_zone = UTC;

Также мне очень помог этот пост:

Как установить правильный часовой пояс MySQL JDBC в конфигурации Spring Boot

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