本文將優雅地解決如何在 Java 和 MySQL 中儲存不包含時間資訊的日期的問題。
java.time 提供了多種日期時間類型,其中 LocalDate 代表不包含時間或時區資訊的日期。在 java.time 中,日期使用 ISO 8601 標準表示,確保日期部分在所有時區中保持一致。
在 MySQL 中儲存 LocalDate 值時,應使用 DATE 資料類型。下表顯示了 ANSI SQL 資料類型和 Java 8 日期時間類型之間的對應:
ANSI SQL 数据类型 | Java 8 日期时间类型 |
---|---|
DATE | 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中文網其他相關文章!