Dieser Artikel löst auf elegante Weise das Problem, wie Datumsangaben ohne Zeitinformationen in Java und MySQL gespeichert werden.
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.
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 |
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.
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!