用jdbc连接oracle数据库时遇到了一个奇怪的问题:
stmt = conn.createStatement();
rs = stmt.executeQuery(sqlStr);
...
rs.getString(2);
这样取得的一个时间(Date)类型的字段的值是:2009-02-09 14:58:34.0如果把上面的第一句改成stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
取得的结果就是:2/9/2009 14:50:2不知道什么原因,不知有没有人遇到过?

解决方案 »

  1.   

    那还是使用getDate(),然后自己进行格式化操作吧。
      

  2.   

    ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY
    和格式化应该没有关系
      

  3.   

    我也就是觉得应该不会有影响,所以不想去动程序,
    但是现在问题确实出现了,不知道是是不是jdbc本身的原因,不知有没有其他人遇到过类似情况?
      

  4.   

    date类型的问题。可以像LS说的那样得到之后。再格式化 得到自己想要的日期格式
      

  5.   

    我试了一下没有楼主所有的问题,楼主请检查一下sqlStr 这个变量的sql语句是不是一样.另外,如果字段是Date类型, 你直接用getString()的话,返回的格式可能是不确定的,放在不同的操作系统,或者修改当前的操作系统的默认日期格式都可能会改变getString()的值, 所以建议你先用getDate() 取得值, 然后再用以下代码转换成字符串,
    java.sql.Date date = rs.getDate(2);
    java.text.SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    str = df.format(date);
      

  6.   

    时间转字符串的时候是这样的
    楼主可以在SQL里面把这个转成字符串!要不然改下数据库或程序!
      

  7.   

    看了一下oralce odbc的说明,好像是有这个问题
    现在正在考虑取出时间来转,
    但是我查询数据库的sql是一个通用程序处理的,我并不知道当前字段该是什么类型的,
    对于按序号取的好处理 :int colType = rs.getMetaData().getColumnType(columnIndex);
    这样就可以取得字段类型了,
    不知道有没有办法知道字段名,取得字段的columnIndex
      

  8.   


    我这边测试了很多次,就是不一样,select sysdate from dual直接一个简单的sql,取系统时间。
    请问你的数据库和jdbc分别是什么版本的?
    Specification-Title: "Oracle JDBC driver classes for use with JDK1.4"
    Specification-Version: "Oracle JDBC Driver version - 9.0.2.0.0"
    Specification-Vendor: "Oracle Corporation" .
    Implementation-Title: "ojdbc14.jar"
    Implementation-Version: "Oracle JDBC Driver version - 9.0.2.0.0"
    Implementation-Vendor: "Oracle Corporation"
    Implementation-Time: "Tue Apr  6 01:10:57 2004"数据库版本是9.2.0.1.0
      

  9.   

    我用的是mysql,没发现你说的问题。 如果你确定不是代码出问题,那可能跟数据库有关了.另外,如果是日期类型,最好不要用getString(),因为出来的格式会不确定的,我上面已经说了。 用以下代码吧:
    java.sql.Date date = rs.getDate(2); 
    java.text.SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    str = df.format(date);  
      

  10.   

    最好是用getTimeStamp,然后自己格式化
      

  11.   

    小弟我 现用SQL 数据库,我在项目练习中,从数据库中取得时间,通常都是用 String 直接输出,要不就是用系统函数,getDate() 去设置输出的时间字符串格式,对于前辈您的问题,我也想学习一下。   赞同5楼大哥的做法。