Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyimpan Tarikh dengan Cekap Tanpa Masa atau Maklumat Zon Masa dalam Java dan MySQL?

Bagaimana untuk Menyimpan Tarikh dengan Cekap Tanpa Masa atau Maklumat Zon Masa dalam Java dan MySQL?

Barbara Streisand
Barbara Streisandasal
2025-01-22 05:51:121060semak imbas

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

Penyimpanan tarikh yang cekap (tanpa maklumat zon masa atau masa) dalam Java dan MySQL

Artikel ini secara elegan akan menyelesaikan masalah cara menyimpan tarikh tanpa maklumat masa dalam Java dan MySQL.

java.time: LocalDate

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.

Pemetaan jenis data MySQL

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

Menyimpan LocalDate dalam MySQL

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.

Contoh

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn