`
xusweeter
  • 浏览: 57351 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

JDBC:数据库操作中的日期精度丢失解决办法

阅读更多

JDBC:数据库操作中的日期精度丢失解决办法

      在使用JDBC操作数据库时,无论是PreparedStatement的setDate(),还是ResultSet的getDate()方法,所使用的都是日期都是java.sql.Date类型,所以将日期数据插入数据库或从数据库中读取日期数据时,将会面临丧失时间精度的问题,还好JDK为我们提供了java.sql.Timestamp类来解决此问题。

日期数据插入数据库:

Date utilDate = new Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
pstmt.setDate(1, sqlDate);

 

      上面的代码就可以把java.util.Date转化为java.sql.Date类型插入数据库,但是这种方式是存在问题的,那就是插入数据库中的日期数据只包含了日期而未包含时间,要解决这一问题,就需要使用java.sql.Timestamp类。

 

Date utilDate = new Date();
Timestamp timestamp = new Timestamp(utilDate.getTime());
pstmt.setTimestamp(1, timestamp);
 

数据库查询日期数据:

java.sql.Date sqlDate = rs.getDate("Birthday");
Date utilDate = new Date(sqlDate.getTime());
System.out.println(utilDate);
 

      输出结果为: Thu Dec 30 00:00:00 CST 2010

 

      从运行结果可以知道,数据库查询中得到的日期也是java.sql.Date类型,仍然得不到时间,所以还需要借助于java.sql.Timestamp类.

 

Timestamp timestamp = rs.getTimestamp("Birthday");
Date utilDate = new Date(timestamp.getTime());
System.out.println(utilDate);
 

      输出结果为: Thu Dec 30 20:54:52 CST 2010

 

 

      , xusweeter @ 2010年12月30日

 

0
0
分享到:
评论

相关推荐

    jdbc操作数据库之Date类型

    对于JDBC而言,推荐的做法是将数据库中的`Date`类型字段对应的实体类属性设置为`String`类型,以便于操作和日期查询。此外,使用精确的时间格式存储和查询数据可以避免后续可能出现的问题,并为系统功能的扩展提供...

    JDBC中的Results相关函数

    总之,ResultSet的getXxx()方法是JDBC编程中获取查询结果的关键,它们允许开发者以适当的数据类型访问数据库中的每一条记录,从而实现对数据库数据的有效操作和处理。了解并熟练掌握这些方法,将有助于提高Java...

    2021-2022计算机二级等级考试试题及答案No.3430.docx

    **详细解释**:货币数据类型在大多数数据库管理系统中等价于具有双精度属性的数字数据类型。这意味着它可以精确地存储货币值,避免了使用浮点数时可能出现的舍入误差问题。 ### 15. 数据删除操作 **知识点概述**:...

    java基础详解

    #### 十二、JDBC数据库操作 - **JDBC**:Java Database Connectivity,用于与各种数据库进行交互的标准API。 - **连接数据库**: - 加载驱动:通过`Class.forName()`加载JDBC驱动。 - 获取连接:使用`...

    java基础题目 java面试题

    注意转换时要避免数据溢出和精度丢失。 4. **日期和时间**: - 获取年月日、小时分秒:使用`Calendar`类,如示例所示。 - 获取从1970年到现在的毫秒数:通过`Date`类的`getTime()`方法。 - 获取某日期是当月的...

    SQL数据类型和转换

    JDBC(Java Database Connectivity)是Java中与数据库交互的API,它规定了一套标准的数据类型和转换规则。 在JDBC中,ResultSet对象是执行SQL查询后返回的结果集,它提供了多种getXXX方法来获取结果集中列的值,并...

    深圳某公司JAVA程序员面试试题~~

    这使得它非常适合用来表示SQL中的日期值,简化了与数据库交互时的日期处理。 3. **值的赋值**:由于`java.sql.Date`继承自`java.util.Date`,理论上可以直接将`java.sql.Date`的对象赋值给`java.util.Date`的变量,...

    java课件2

    Java是一种广泛使用的面向对象的编程语言,以其平台独立性、高效性和灵活性著称。...通过深入学习和不断实践,你将能够逐步掌握Java编程,进而探索更高级的Java特性和技术,如JDBC数据库连接、Spring框架、微服务等。

    2018_BAT的55道sql面试题

    3. **Heap表**:Heap表是内存中的临时表,通常用于快速处理大量数据,但不持久化存储,当数据库关闭时,数据将丢失。 4. **默认端口**:MySQL服务器默认监听的端口是3306。 5. **MySQL与Oracle比较**:MySQL的优势...

    JSP学生档案管理系统mysql

    开发这样一个系统,开发者会使用JSP语法编写动态网页,结合Servlet进行业务逻辑处理,并使用JDBC(Java Database Connectivity)接口与MySQL数据库进行交互。此外,可能会使用Java框架,如Spring MVC或Struts,以...

    解析MySql与Java的时间类型

    在进行数据库操作时,Java的JDBC API提供了`ResultSet`接口,可以从查询结果中获取相应的时间类型数据,如示例代码所示,通过`ResultSet.getDate()`、`ResultSet.getTime()`和`ResultSet.getTimestamp()`方法。...

    \java函数速查.rar

    以上只是Java函数速查手册可能涉及的一部分关键知识点,实际手册中还可能包括更多关于并发编程、I/O流、XML处理、日期时间API、JDBC数据库操作、注解、枚举、类型推断等深入主题。通过查阅这样的速查手册,开发者...

    MySQL面试题及答案.docx

    但是,如果表的类型是 InnoDB,那么自增主键的最大 ID 只会被记录到内存中,重启数据库或者对表进行 OPTIMIZE 操作都会导致最大 ID 丢失。 2. MySQL 的技术特点 MySQL 数据库软件是一个客户端或服务器系统,其中...

    一个专业搜索公司关于lucene+solar资料(1)

    - **3.2.2 JDBC数据库连接** - JDBC是Java访问关系型数据库的标准接口。 - 通过JDBC可以轻松连接各种数据库,执行SQL查询。 - **3.2.3 增量抓取** - 对于已有的数据进行定期更新,只抓取新产生的数据。 - 有助...

    整理后java开发全套达内学习笔记(含练习)

    注意:默认类型转换(自动类型提升)会丢失精度,但只有三种情况: int>float; long>float; long>double. 看一下他们的有效位就明白。 二进制是无法精确的表示 0.1 的。 进行高精度运算可以用java.math包中...

Global site tag (gtag.js) - Google Analytics