public List<PrjInfo> findPrjInfo() throws ParseException {
String sql = "SELECT *  FROM voole_prjinfo ";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
PrjInfo info = null;
try {
conn = DbUtil.getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()) {
info = new PrjInfo();
info.setPrj_id(rs.getString("prj_id"));
info.setPrj_name(rs.getString("prj_name"));
info.setPrj_constructdep(rs.getString("prj_constructdep"));

info.setPrj_startdate((Date) rs.getObject("prj_startdate"));
System.out.print(rs.getDate("prj_constructdep"));
    infolist.add(info);
}
}catch(SQLException e) {
e.printStackTrace();
}finally {
DbUtil.close(rs);
DbUtil.close(pstmt);
DbUtil.close(conn);
}
return infolist;
  
  }最近在一个小项目,现在从数据库读取日期时遇到问题,试了好多办法还是没有解决,求助

解决方案 »

  1.   

    强转不成功吧,取出来之后在转换成date就好了
      

  2.   

    1 SimpleDateFormat担当重任,怎样格式化都行import java.util.Date;
    import java.text.SimpleDateFormat;
    public class Demo
    {
     public static void main(String[] args)
     {
      Date now=new Date();
      SimpleDateFormat f=newSimpleDateFormat("今天是"+"yyyy年MM月dd日 E kk点mm分");
      System.out.println(f.format(now));
     
      f=new SimpleDateFormat("a hh点mm分ss秒");
      System.out.println(f.format(now));
      }
     }
     2 从字符串到日期类型的转换:import java.util.Date;
    import java.text.SimpleDateFormat;
    import java.util.GregorianCalendar;
    import java.text.*;
    publicclass Demo
    {
     public static void main(String[] args)
     {
      String strDate="2005年04月22日";
      //注意:SimpleDateFormat构造函数的样式与strDate的样式必须相符
      SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 ");
      SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //加上时间
      //必须捕获异常  try
      {
       Date date=simpleDateFormat.parse(strDate);
       System.out.println(date);
      }
      catch(ParseException px)
      {
       px.printStackTrace();
      }
     }
    }
     3 将毫秒数换转成日期类型import java.util.Date;
    import java.text.SimpleDateFormat;
    import java.util.GregorianCalendar;
    import java.text.*;
    public class Demo
    {
     public static void main(String[] args)
     {
      long now=System.currentTimeMillis();
      System.out.println("毫秒数:"+now);
      Date dNow=new Date(now);
      System.out.println("日期类型:"+dNow);
     }
    }
    这3例源自http://blog.csdn.net/zhoujian2003/archive/2005/04/22/358363.aspx4 获取系统时期和时间,转换成SQL格式后更新到数据库(http://blog.csdn.net/netrope/archive/2005/11/19/532729.aspx)java.util.Date d=new java.util.Date();    //获取当前系统的时间 //格式化日期new java.text.SimpleDateFormat s= new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateStr = s.format(d); //转为字符串 -----------------------------------------------------------------------比较日期大小import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class test {    public static void main(String args[]) {
           int i= compare_date("1995-11-12 15:21", "1999-12-11 09:59");
           System.out.println("i=="+i);
        }    public static int compare_date(String DATE1, String DATE2) {
           
           
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
            try {
                Date dt1 = df.parse(DATE1);
                Date dt2 = df.parse(DATE2);
                if (dt1.getTime() > dt2.getTime()) {
                    System.out.println("dt1 在dt2前");
                    return 1;
                } else if (dt1.getTime() < dt2.getTime()) {
                    System.out.println("dt1在dt2后");
                    return -1;
                } else {
                    return 0;
                }
            } catch (Exception exception) {
                exception.printStackTrace();
            }
            return 0;
        }
    }     
      

  3.   


                    info.setPrj_startdate((Date) rs.getObject("prj_startdate"));
    这里,直接用字符串型式取出来  rs.getString("prj_startdate");然后再用我上面的方法 转成时间类型。  可以实现LZ 的问题
      

  4.   

    info.setPrj_startdate((Date) rs.getObject("prj_startdate"));prj_startdate在数据库里是什么类型的?如果是varchar的话,用getString获取,然后用SimpleDateFormat格式化。。如果是datetime的话,用getDate获取
      

  5.   

    在数据库中的是date类型的,但是用getDate方法获取不行,报错
      

  6.   

    getString,然后用SimpleDateFormat进行转换
      

  7.   

    直接用字符串接收 然后想要什么样子用SimpleDateFormat自己转换
      

  8.   

    建议存取进数据库的时间类型设置为number  ,大量数据查询的话效率高些。取出来的时候再用SimpleDateFormat进行转换
      

  9.   

    先取出来吧,然后用SimpleDateFormat转一次
      

  10.   

    这样是能取出来,但是日期格式变成了Tue Nov 08 00:00:00 CST 2011 
    本来应该是2011-11-08
      

  11.   

    绕了个弯
    直接用info.setPrj_startdate( rs.getDate("prj_startdate"));就可以了
    一开始不知道为什么用这个不行,感谢各位的回答