知識庫 / Spring / Spring Boot RSS 訂閱

使用 Spring Boot 配置設置 MySQL JDBC 時區

Persistence,Spring Boot,Spring Data
HongKong
10
01:21 PM · Dec 06 ,2025

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: UTC

4. JVM 默認時區

當然,我們也可以更新 Java 的默認時區。

為了選擇我們的時區,我們需要在 URL 中添加屬性 `forceConnectionTimeZoneToSession=true。 然後,我們只需要添加一個簡單的方法:

@PostConstruct
void started() {
  TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}

但是,這種解決方案可能會產生其他問題,因為它具有全局應用範圍。 也許其他應用程序的部分需要不同的時區。例如,我們可能需要連接到不同的數據庫,而這些數據庫出於某種原因,需要日期存儲在不同的時區中。

5. 結論

在本教程中,我們探討了多種配置 MySQL JDBC 時區的方法,這些方法都適用於 Spring 環境。我們通過 URL 參數、屬性以及更改 JVM 默認時區這三種方式來實現。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.