Artikel ini secara elegan akan menyelesaikan masalah cara menyimpan tarikh tanpa maklumat masa dalam Java dan MySQL.
java.time menyediakan berbilang jenis datetime, dengan LocalDate mewakili tarikh yang tidak mengandungi maklumat masa atau zon waktu. Dalam java.time, tarikh diwakili menggunakan standard ISO 8601, memastikan bahagian tarikh adalah konsisten merentas semua zon waktu.
Apabila menyimpan nilai LocalDate dalam MySQL, jenis data DATE harus digunakan. Jadual berikut menunjukkan pemetaan antara jenis data ANSI SQL dan jenis datetime Java 8:
ANSI SQL 数据类型 | Java 8 日期时间类型 |
---|---|
DATE | LocalDate |
Untuk menyimpan nilai LocalDate ke dalam MySQL, anda boleh menggunakan pernyataan JDBC berikut:
<code class="language-java">PreparedStatement stmt = connection.prepareStatement("INSERT INTO birth_dates (birthdate) VALUES (?)"); stmt.setObject(1, localDate);</code>
Apabila data diambil daripada pangkalan data, ia akan sentiasa ditafsirkan sebagai tarikh yang sama tanpa mengira zon waktu pelanggan atau pelayan pangkalan data.
Berikut ialah contoh cara menggunakan java.time untuk menyimpan dan mendapatkan tarikh yang tidak mengandungi maklumat masa atau zon waktu:
<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>
Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Tarikh dengan Cekap Tanpa Masa atau Maklumat Zon Masa dalam Java dan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!