Heim >Datenbank >MySQL-Tutorial >Wie speichert man Daten ohne Zeit- oder Zeitzoneninformationen effizient in Java und MySQL?

Wie speichert man Daten ohne Zeit- oder Zeitzoneninformationen effizient in Java und MySQL?

Barbara Streisand
Barbara StreisandOriginal
2025-01-22 05:51:12999Durchsuche

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

Effiziente Speicherung von Daten (ohne Zeit- oder Zeitzoneninformationen) in Java und MySQL

Dieser Artikel löst auf elegante Weise das Problem, wie Datumsangaben ohne Zeitinformationen in Java und MySQL gespeichert werden.

java.time: LocalDate

java.time stellt mehrere Datums-/Uhrzeittypen bereit, wobei LocalDate ein Datum darstellt, das keine Zeit- oder Zeitzoneninformationen enthält. In java.time werden Datumsangaben mithilfe des ISO 8601-Standards dargestellt, wodurch sichergestellt wird, dass der Datumsteil über alle Zeitzonen hinweg konsistent ist.

MySQL-Datentypzuordnung

Beim Speichern von LocalDate-Werten in MySQL sollte der Datentyp DATE verwendet werden. Die folgende Tabelle zeigt die Zuordnung zwischen ANSI SQL-Datentypen und Java 8-Datetime-Typen:

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

Lokales Datum in MySQL speichern

Um einen LocalDate-Wert in MySQL zu speichern, können Sie die folgende JDBC-Anweisung verwenden:

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

Wenn Daten aus der Datenbank abgerufen werden, werden sie unabhängig von der Zeitzone des Clients oder Datenbankservers immer als dasselbe Datum interpretiert.

Beispiel

Hier ist ein Beispiel für die Verwendung von java.time zum Speichern und Abrufen von Daten, die keine Zeit- oder Zeitzoneninformationen enthalten:

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

Das obige ist der detaillierte Inhalt vonWie speichert man Daten ohne Zeit- oder Zeitzoneninformationen effizient in Java und MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn