首页 > 数据库 > mysql教程 > 如何在Java和MySQL中高效存储没有时间或时区信息的日期?

如何在Java和MySQL中高效存储没有时间或时区信息的日期?

Barbara Streisand
发布: 2025-01-22 05:51:12
原创
996 人浏览过

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

Java 和 MySQL 中高效存储日期(无时间或时区信息)

本文将优雅地解决如何在 Java 和 MySQL 中存储不包含时间信息的日期的问题。

java.time: LocalDate

java.time 提供了多种日期时间类型,其中 LocalDate 代表不包含时间或时区信息的日期。在 java.time 中,日期使用 ISO 8601 标准表示,确保日期部分在所有时区中保持一致。

MySQL 数据类型映射

在 MySQL 中存储 LocalDate 值时,应使用 DATE 数据类型。下表显示了 ANSI SQL 数据类型和 Java 8 日期时间类型之间的映射:

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

在 MySQL 中存储 LocalDate

要将 LocalDate 值存储到 MySQL 中,可以使用以下 JDBC 语句:

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

从数据库中检索数据时,无论客户端或数据库服务器的时区如何,它都将始终解释为相同的日期。

示例

以下是如何使用 java.time 存储和检索不包含时间或时区信息的日期的示例:

<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>
登录后复制

以上是如何在Java和MySQL中高效存储没有时间或时区信息的日期?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板