1. 概述
有時,當我們存儲 MySQL 中的日期時,我們會發現數據庫中的日期與我們的系統或 JVM 不同。
有時,我們只需要用另一個時區運行我們的應用程序。
在本教程中,我們將探討使用 Spring Boot 配置更改 MySQL 時區的不同方法。
2. 時間區作為 URL 參數
指定時間區的一種方式是在連接 URL 字符串中作為參數。
為了選擇我們的時間區,我們需要將 connectionTimeZone 屬性添加到其中以指定時間區:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?connectionTimeZone=UTC
username: root
password:此外,我們當然可以使用 Java 配置來配置數據源。
您可以在 MySQL 官方文檔 中找到有關此屬性和其他屬性的更多信息。
3. Spring Boot 屬性
或者,與其通過 connectionTimeZone URL 參數指示時區,不如在我們的 Spring Boot 配置中指定 time_zone 屬性:
spring.jpa.properties.hibernate.jdbc.time_zone=UTC或者使用 YAML:
spring:
jpa:
properties:
hibernate:
jdbc:
time_zone: UTC4. JVM 默認時區
當然,我們也可以更新 Java 的默認時區。
為了選擇我們的時區,我們需要在 URL 中添加屬性 `forceConnectionTimeZoneToSession=true。 然後,我們只需要添加一個簡單的方法:
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}但是,這種解決方案可能會產生其他問題,因為它具有全局應用範圍。 也許其他應用程序的部分需要不同的時區。例如,我們可能需要連接到不同的數據庫,而這些數據庫出於某種原因,需要日期存儲在不同的時區中。
5. 結論
在本教程中,我們探討了多種配置 MySQL JDBC 時區的方法,這些方法都適用於 Spring 環境。我們通過 URL 參數、屬性以及更改 JVM 默認時區這三種方式來實現。