我有一个表,其中一个字段datetime为oracle sysdate函数自动插入的时间。插入几条记录后,该字段在数据库中存入例如“2006-11-22 08:58:02”这样的信息。
接着我在我的java 程序中取出该字段,显示结果。结果为“2006-11-22 08:58:02.0”注意莫名其妙的多了个.0?    怎么回事哪?我的代码如下:
public class test{    private void getDate(){
    
      try{ 
       String sql="select * from dbmslog";
       MyUtil.execute(sql);
       ResultSet res=MyUtil.getRes();
       while(res.next()){//该表有10个字段,第10个字段为datetime
  
           System.out.println(MyUtil.toUTF(res.getString(10)));
   
           
          
                                        

 }
    
     }catch(Exception e){
         e.printStackTrace();
     }    finally{
         Pool.close();
     }
  
  }}

解决方案 »

  1.   

    由于有日期格式的问题,你这样直接getstring存在隐患
    你不如直接String sql="select to_date('yourcol','yyyy-mm-dd hh24:mi:ss') from dbmslog";
      

  2.   

    好像不是楼上所说的问题
    首先:直接运行 :select  sysdate   from   dual  结果 :11/27/2006 16:17
    而且:毫秒记录也不是 后面多一个“.0”
    select  to_char(sysdate,'YYYY-MM-DD HH24:MI.SS')   from   dual
    结果:2006-11-27 16:20.04应该跟java有关系,解决方法建议使用上述。
    P.S. 我用ODBC连接ORA9.2,tomcat 4。1 ,JSP 。没有出现这个问题。
      

  3.   

    刚才有点错,应该是系统设置问题,
    goodbee(采蜂)说得没错
    如下语句可以修改默认的时间格式。
    alter session set nls_date_format='yyyymmddhh24miss'
      

  4.   

    严格的说,Oracle,没有DateTime类型。
    Date类型的存储类型其实是一个整数,没有所谓的格式。
    java中取出Oracel的Date类型,需要转化为字符串才能表示出来。
    SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    System.out.println(f.format(res.getString(10)));
    你的问题只是默认的转化各是不符合你的要求。
    而且,DateTime类型的对象,用不要用简单的toString之类的函数来变成字符串。