Maison > base de données > tutoriel mysql > Comment stocker efficacement des dates sans informations d'heure ou de fuseau horaire dans Java et MySQL ?

Comment stocker efficacement des dates sans informations d'heure ou de fuseau horaire dans Java et MySQL ?

Barbara Streisand
Libérer: 2025-01-22 05:51:12
original
996 Les gens l'ont consulté

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

Stockage efficace des dates (sans informations d'heure ou de fuseau horaire) en Java et MySQL

Cet article résoudra avec élégance le problème du stockage des dates sans informations temporelles en Java et MySQL.

java.time : LocalDate

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.

Mappage des types de données MySQL

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

Stockage de LocalDate dans MySQL

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>
Copier après la connexion

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.

Exemple

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal