Cet article résoudra avec élégance le problème du stockage des dates sans informations temporelles en Java et MySQL.
java.time fournit plusieurs types datetime, où LocalDate représente une date qui ne contient pas d'informations d'heure ou de fuseau horaire. Dans java.time, les dates sont représentées à l'aide de la norme ISO 8601, garantissant que la partie date est cohérente dans tous les fuseaux horaires.
Lors du stockage des valeurs LocalDate dans MySQL, le type de données DATE doit être utilisé. Le tableau suivant montre le mappage entre les types de données ANSI SQL et les types datetime Java 8 :
ANSI SQL 数据类型 | Java 8 日期时间类型 |
---|---|
DATE | LocalDate |
Pour stocker une valeur LocalDate dans MySQL, vous pouvez utiliser l'instruction JDBC suivante :
<code class="language-java">PreparedStatement stmt = connection.prepareStatement("INSERT INTO birth_dates (birthdate) VALUES (?)"); stmt.setObject(1, localDate);</code>
Lorsque les données sont récupérées de la base de données, elles seront toujours interprétées comme la même date quel que soit le fuseau horaire du client ou du serveur de base de données.
Voici un exemple d'utilisation de java.time pour stocker et récupérer des dates qui ne contiennent pas d'informations sur l'heure ou le fuseau horaire :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!