1. Обзор
Иногда, когда мы храним даты в MyS’L, мы понимаем, что дата из базы данных отличается от нашей системы или СПМ.
В других случаях нам просто нужно запустить наше приложение с другим часовой поясом.
В этом учебнике мы увидим различные способы изменить тайм-пояс MyS’L с помощью конфигурации Spring Boot .
2. Часовой пояс как URL Парам
Одним из способов указать часовой пояс является строка URL-адреса соединения в качестве параметра.
По умолчанию MyS’L использует useLegacyDatetimeCode-true. Для того, чтобы выбрать наш тайм-зон, мы должны изменить это свойство на ложные . И, конечно, мы также добавляем серверTimezone указать тайм-пояс:
spring: datasource: url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useLegacyDatetimeCode=false username: root password:
Кроме того, мы можем, конечно, настроить источник данных с конфигурацией Java вместо этого.
У нас есть больше информации об этом отеле и других в Официальная документация MyS’L .
3. Весенняя загрузка собственности
Или вместо того, чтобы указывать в timezone через серверTimezone Параметр URL, мы можем указать time_zone свойство в нашей конфигурации Spring Boot:
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
Или с YAML:
spring: jpa: properties: hibernate: jdbc: time_zone: UTC
Но, это все еще необходимо добавить useLegacyDatetimeCode-ложный в URL- как мы видели раньше.
4. Часовой пояс по умолчанию JVM
И, конечно, мы можем обновить часовой пояс по умолчанию, что Java имеет.
Опять же, мы добавляем useLegacyDatetimeCode-ложный в URL- по-прежнему. И тогда нам просто нужно добавить простой метод:
@PostConstruct void started() { TimeZone.setDefault(TimeZone.getTimeZone("UTC")); }
Но, это решение может создать другие проблемы, так как это по всему приложению. Возможно, другие части приложений нуждаются в другом часовом поясе. Например, нам может потребоваться подключение к различным базам данных, и им по каким-то причинам нужны даты для хранения в разных часовых поясах.
5. Заключение
В этом учебнике мы увидели несколько различных способов настройки часового пояса MyS’L JDBC весной. Мы сделали это с URL-парамом, с свойством, и путем изменения часового пояса JVM по умолчанию.
Как всегда, полный набор примеров более на GitHub .