当前位置: 代码迷 >> Java Web开发 >> java.util.date转TimeStamp有关问题
  详细解决方案

java.util.date转TimeStamp有关问题

热度:117   发布时间:2016-04-12 23:15:53.0
java.util.date转TimeStamp问题
从页面接收的日期 先转为java.util.date 后 在转为TimeStamp类型插入数据库
现在的问题是 转为java.util.date 后,数据为Tue Jan 01 08:00:00 CST 2013
Timestamp startTime = new Timestamp(xxx.getTime();
转后得到的数据为
2013-01-01 08:00:00.0
为何后面多了一个.0
但是查询oracle数据库里面  数据却为2013-01-01 08:00:00
求解,为何

------解决方案--------------------
数据精确度的问题。。。。
------解决方案--------------------
看看API就知道了

一个与 java.util.Date 类有关的瘦包装器 (thin wrapper),它允许 JDBC API 将该类标识为 SQL TIMESTAMP 值。它通过允许小数秒到纳秒级精度的规范来添加保存 SQL TIMESTAMP 小数秒值的能力。Timestamp 也提供支持时间戳值的 JDBC 转义语法的格式化和解析操作的能力。 

计算 Timestamp 对象的精度为二者之一: 

19 ,其为 yyyy-mm-dd hh:mm:ss 格式下的字符数 
20 + s ,其为 yyyy-mm-dd hh:mm:ss.[fff...] 格式下的字符数,s 表示给定 Timestamp 的标度(其小数秒精度)。

------解决方案--------------------
在jdk的帮助文档中写了关于这个。
一个与 java.util.Date 类有关的瘦包装器 (thin wrapper),它允许 JDBC API 将该类标识为 SQL TIMESTAMP 值。它通过允许小数秒到纳秒级精度的规范来添加保存 SQL TIMESTAMP 小数秒值的能力。Timestamp 也提供支持时间戳值的 JDBC 转义语法的格式化和解析操作的能力。 

计算 Timestamp 对象的精度为二者之一: 

19 ,其为 yyyy-mm-dd hh:mm:ss 格式下的字符数 
20 + s ,其为 yyyy-mm-dd hh:mm:ss.[fff...] 格式下的字符数,s 表示给定 Timestamp 的标度(其小数秒精度)。
注:此类型由 java.util.Date 和单独的毫微秒值组成。只有整数秒才会存储在 java.util.Date 组件中。小数秒(毫微秒)是独立存在的。传递不是 java.sql.Timestamp 实例的对象时,Timestamp.equals(Object) 方法永远不会返回 true,因为日期的毫微秒组件是未知的。因此,相对于 java.util.Date.equals(Object) 方法而言,Timestamp.equals(Object) 方法是不对称的。此外,hashcode 方法使用底层 java.util.Date 实现并因此在其计算中不包括毫微秒

你查数据的时候,应该是用oracle的方法规范了它的输出格式。
  相关解决方案