数据库
Create table t (d Date);java部分代码:
String DateStr = "1985-07-11 10:30:00.0";pstmt = conn.prepareStatement("INSERT INTO t(d) VALUES(?)");pstmt.setDate(1, Date.valueOf(DateStr))就会报错
For input string: "11 10:30:00.0"我知道Date.valueOf("YYYY-MM-DD")是不会错的,但是我需要保留日期后面的时间,不知道该如何转换呢?

解决方案 »

  1.   

    public static void main(String[] args) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    try {
    java.util.Date d = (java.util.Date) sdf.parse("1985-07-11 10:30:00.0");
    System.out.println(sdf.format(d));
    } catch (ParseException e) {
    e.printStackTrace();
    }

    }
      

  2.   

    String DateStr = "1985-07-11 10:30:00.0";pstmt = conn.prepareStatement("INSERT INTO t(d) VALUES(?)");java.sql.Date d = java.text.DateFormat.parse(DateStr);pstmt.setDate(1, d)
      

  3.   

    用的是java.sql.Date.valueOf(String date)方法吧,
    它的参数String date的格式为"yyyy-mm-dd",
    同时要知道,
    java.sql.Date.toString()也是"yyyy-mm-dd"格式的
      

  4.   

    String DateStr = "1985-07-11 10:30:00.0";pstmt = conn.prepareStatement("INSERT INTO t(d) VALUES(?)");//要保留日期和时间,使用Timestamp类。
    java.sql.Timestamp d = (java.sql.Timestamp)java.text.DateFormat.parse(DateStr);pstmt.setTimestamp(1, d)
      

  5.   

    第三句应该是这样:java.sql.Timestamp d = (java.sql.Timestamp)DateFormat.getInstance().parse(DateStr);
      

  6.   

    String DateStr = "1985-07-11 10:30:00.0";pstmt = conn.prepareStatement("INSERT INTO t(d) VALUES(to_date(?,'YYYY-MM-DD HH24:MI:SS')");pstmt.setDate(1, Date.valueOf(DateStr))
      

  7.   

    奇怪了,还是有错误哦:
    Unparseable date: "2005-06-03 19:15:28"代码:
    String DateStr = sColumnText.length()>19?sColumnText.substring(0,19):sColumnText;
    //此时DateStr = "2005-06-03 19:15:28"
    Timestamp d = (Timestamp)DateFormat.getInstance().parse(DateStr); //执行这一句就出错了。
    stmt.setTimestamp(i, d);
      

  8.   

    谢谢各位关注,问题已经解决:
    String DateStr = sColumnText.length()>19?sColumnText.substring(0,19):sColumnText;
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    java.sql.Timestamp d = new Timestamp(df.parse(DateStr).getTime());
    stmt.setTimestamp(i, d);