sql  = " select * from mytable mytable "里面有一个字段:Create_Date :是timestamp 类型,默认值是sysdate
PLSQL里面显示的值是:17-5月 -10 03.48.51.000000 下午
  
  bean 中对应有一个 private java.sql.Timestamp   Create_Date ,同时有getCreate_Date() setCreate_Date(Timestamp t) 方法。
  
  我们将ResultSet rs 取得的每一条记录,保存到Hashtable 里面。 最后
 else if (parameterTypeName.equals(("java.sql.Timestamp"))) {ms[i].invoke(bean,new Object[] { java.sql.Timestamp.valueOf((String) ht.get(fliedName.toLowerCase())) });执行到这一句报错,说Timestamp  Cast 异常!对于Timestamp类型,确实很头痛。要怎么转换呢? 谢谢大家。

解决方案 »

  1.   

    这个问题很简单哦。
    源于你的错误的timestamp格式。
    获取连接以后,执行:
    alter session set nls_timestamp_format='YYYY-MM-DD HH24:MI:SS.FF3'这样,你得到的标准格式的timestamp, 再调用java.sql.Timestamp.valueOf((String) ht.get(fliedName.toLowerCase())) });
    就不会出错了。这是一个比较常用的窍门。
      

  2.   

    我要在JAVA 或JSP里面转呢?这么转换啊?
    在SQL语句里面格式化Timestamp吗?我试试了,好像有用。
      

  3.   

    是的。你可能还没完全明白我的意思,在你得到数据库的连接之后,第一件事就是指定这个连接的nls_timestamp_format。这样,在这之后你得到的timestamp就是标准格式了。
      

  4.   

    java或jsp里一样可以用。c里头也可以用。呵呵,为了显示的需要。