日期:2014-05-16  浏览次数:20635 次

oracle 数据库,通过resultSet.getObject获取时间类型截断的问题的解析

一般的数据库中,DATE字段仅仅表示日期,不包括日期信息,而Oracle数据库中的DATE数据类型是包括日期、时间的,对于不同的Oracle jdbc驱动版本,对于该问题的处理都有些区别,如果你使用9i或者11g
的驱动程序,可能不会发现什么困惑,不幸的话,你使用Oracle10g的JDBC驱动,问题就来了,你会发现时间不见了
看下面的程序
? 表结构如下
create table t_test(
id int,
date1 date,
date2 timestamp,
primary key(id)
)

?1 try ? {
?2 ????????????Class.forName( " oracle.jdbc.OracleDriver " );
?3 ????????????java.sql.Connection?connection1? = ?DriverManager.getConnection( " jdbc:oracle:thin:@192.168.8.200:1521:cdb " ,? " sysusr " ,? " sys " );
?4 ????????????System.out.println(connection1);
?5 ????????????System.out.println(connection1.getMetaData().getDriverName() + " ? " + connection1.getMetaData().getDriverVersion());
?6 ????????????ResultSet?rs? = ?connection1.createStatement().executeQuery( " select?date1,date2?from?t_test " );
?7 ????????????rs.next();
?8 ?????????????printInfo(rs, 1 );
?9 ????????????printInfo(rs, 2 );
10 ????????}

11 ???????? catch ?(Exception?exception1)? {
12 ????????????exception1.printStackTrace();
13 ????????}

14