首頁 > 資料庫 > mysql教程 > 如何在Java和MySQL中高效儲存沒有時間或時區資訊的日期?

如何在Java和MySQL中高效儲存沒有時間或時區資訊的日期?

Barbara Streisand
發布: 2025-01-22 05:51:12
原創
1038 人瀏覽過

How to Efficiently Store Dates Without Time or Time Zone Information in Java and MySQL?

Java 和 MySQL 中高效率儲存日期(無時間或時區資訊)

本文將優雅地解決如何在 Java 和 MySQL 中儲存不包含時間資訊的日期的問題。

java.time: LocalDate

java.time 提供了多種日期時間類型,其中 LocalDate 代表不包含時間或時區資訊的日期。在 java.time 中,日期使用 ISO 8601 標準表示,確保日期部分在所有時區中保持一致。

MySQL 資料型別對應

在 MySQL 中儲存 LocalDate 值時,應使用 DATE 資料類型。下表顯示了 ANSI SQL 資料類型和 Java 8 日期時間類型之間的對應:

ANSI SQL 数据类型 Java 8 日期时间类型
DATE LocalDate

在 MySQL 中儲存 LocalDate

要將 LocalDate 值儲存到 MySQL 中,可以使用以下 JDBC 語句:

<code class="language-java">PreparedStatement stmt = connection.prepareStatement("INSERT INTO birth_dates (birthdate) VALUES (?)");
stmt.setObject(1, localDate);</code>
登入後複製

從資料庫中檢索資料時,無論客戶端或資料庫伺服器的時區如何,它都將始終解釋為相同的日期。

範例

以下是如何使用 java.time 儲存和檢索不包含時間或時區資訊的日期的範例:

<code class="language-java">// 创建 LocalDate 对象
LocalDate birthday = LocalDate.of(1990, 1, 1);

// 将其存储到数据库中
PreparedStatement stmt = connection.prepareStatement("INSERT INTO birth_dates (birthdate) VALUES (?)");
stmt.setObject(1, birthday);
stmt.executeUpdate();

// 从数据库中检索生日
ResultSet rs = connection.prepareStatement("SELECT birthdate FROM birth_dates WHERE id = 1").executeQuery();
if (rs.next()) {
    LocalDate retrievedBirthday = rs.getObject("birthdate", LocalDate.class);
    System.out.println(retrievedBirthday); // 输出:1990-01-01
}</code>
登入後複製

以上是如何在Java和MySQL中高效儲存沒有時間或時區資訊的日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板