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