Java中如何把非系统时间插入到SQL中
  我现在是在C/S架构下,把考勤文本文件中的字符串(如200708131125)。
200708131125(详细表示为:2007年08月13日 11时25分)
我现在可以用Date.valueOf("yyyy-MM-dd") 这种格式插入到SQL中。
但是现在 HH:mm 和 yyyy-MM-dd HH:mm 格式却不知道做。每次都是提示数据格式不对。
小时:分钟(HH:mm)  或 年月日时分(yyyy-MM-dd HH:mm )
现在问题是:yyyy-MM-dd格式可以插入。但是HH:mm 和 yyyy-MM-dd HH:mm

解决方案 »

  1.   

    to_date(?,'yyyy-mm-dd hh24:mi:ss')oracle中的办法
      

  2.   

    各位高手,进来看看啊,  没人我自己顶
    代码如下:
    FileDialog dlg = new FileDialog(shell, SWT.OPEN);
    dlg.setFilterPath("d:/食堂用餐系统");
    dlg.setFilterNames(new String[] { "记事本(*.txt)" });
    dlg.setFilterExtensions(new String[] { "*.txt" });
    String fileName = dlg.open();
    if (fileName != null) {
    try {
    MessageDialog.openInformation(shell, "确认提示:", "您要读取的内容是:"+fileName);
    } catch(OutOfMemoryError ex){
    MessageBox message = new MessageBox(shell, SWT.ICON_ERROR | SWT.YES);
    message.setText("错误");
    message.setMessage("文本文件太大了,缓存溢出异常!");
    message.open();
    ex.printStackTrace();
    return;
    }
    } else
    return;
    try {
    db = new SQLManager();

    int nLineCount = 0;//行数
    //File file = new File("c:\\aaa.txt");
    File file = new File(fileName);
    //MessageDialog.openInformation(shell, "确认提示:", "您要读取的内容是:"+fileName);
    BufferedReader in = new BufferedReader(new FileReader(file));
    String strLine = "";
    String strYear = "";
    String strTime = "";
    String strDatetime = "";
    String strFlag = "";
    String strKahao = "";
    String strKajihao = "";

    while ((strLine = in.readLine()) != null) {
    strYear = strLine.substring(0, 8);
    strTime = strLine.substring(8, 12);
    strDatetime = strLine.substring(0, 12);
    strFlag = strLine.substring(12, 13);
    strKahao = strLine.substring(13, 19);
    strKajihao = strLine.substring(19, 22);
    String aa = strYear.substring(0, 4)+"-"+strYear.substring(4, 6)+"-"+strYear.substring(6, 8);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    java.util.Date date8 = sdf.parse(aa);//解析
    //java.sql.Date  这样也是可以的
    SimpleDateFormat ma = new SimpleDateFormat("yyyy-MM-dd");
    java.util.Date aaaa = new java.util.Date(date8.getTime());
    System.out.println("yyyy-MM-dd时间格式:"+aaaa);
    System.out.println(ma.format(aaaa));

    //String bb = "11:11";
    String bbb = strTime.substring(0, 2)+":"+strTime.substring(2, 4);
    SimpleDateFormat sdff = new SimpleDateFormat("HH:mm");
    java.util.Date datef8 = sdff.parse(bbb);//解析
    SimpleDateFormat maf = new SimpleDateFormat("HH:mm");
    java.util.Date bbbb = datef8;
    System.out.println("HH:mm时间格式:"+bbbb);
    System.out.println(maf.format(bbbb));

    //String cc = "2008-11-23 11:11";
    String cc = strYear.substring(0, 4)+"-"+strYear.substring(4, 6)+"-"+strYear.substring(6, 8)+" "+strTime.substring(0, 2)+":"+strTime.substring(2, 4);
    SimpleDateFormat sdfff = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    java.util.Date dateff8 = sdfff.parse(cc);//解析
    SimpleDateFormat maff = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    java.util.Date cccc = dateff8;
    System.out.println("yyyy-MM-dd HH:mm时间格式:"+cccc);
    System.out.println(maff.format(cccc));


    System.out.println(strYear);
    System.out.println(strTime);
    System.out.println(strDatetime);
    System.out.println(strFlag);
    System.out.println(strKahao);
    System.out.println(strKajihao);
    System.out.println(strLine);
    System.out.println("行数:"+nLineCount);
    String sql = "insert into cf_yszl3(nyr,sj,flag,kh,kjh) values(?,?,?,?,?)";
    PreparedStatement ps = db.getPreparedStatement(sql);
    ps.setDate(1, Date.valueOf(aa));//maff.format(aa).substring(0, 8)
    ps.setString(2, strTime);
    ps.setString(3, strFlag);
    ps.setString(4, strKahao);
    ps.setString(5, strKajihao);
    ps.execute();
    ps.close();
    //MessageDialog.openInformation(shell, "Biao Ti", "执行了插入语句3");

    //MessageDialog.openInformation(shell, "插入成功:", "插入好了5!!!");
    ++nLineCount;
    }
    MessageDialog.openInformation(shell, "处理数据成功:", "您已完成了数据的处理!!!");

    } catch (Exception eee) {
    eee.printStackTrace();
    }很乱,主要是(HH:mm)和(yyyy-MM-dd HH:mm)不知道怎么插入到SQL中  哎   自己顶
      

  3.   

    to_date(?,'yyyy-mm-dd hh24:mi:ss')oracle中的办法   是啊Oracle中可以用to_date()  但是不知道SQL怎么做啊
       呵呵
      

  4.   

    正确方法:
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
    String time = "200708131125";
    try {
    Date date = sdf.parse(time);
    } catch (ParseException e) {
    e.printStackTrace();
    }
      

  5.   

    String time="200708131125";
    String sql="insert into table(time) values("+"to_date('"+time+"',yyyymmddhh24mi')";
    db.executeUpdate(sql);
    这样不是很直接
      

  6.   

    各位大佬   还是不行啊  要什么样的HH:mm和yyyy-MM-dd HH:mm  格式才能插到SQL中啊
        主要还是插到SQL中的格式不对啊   但是还是谢谢各位    希望如果可以小贴个代码看看 谢谢
      

  7.   

    java.SQL.Date sqlDate=new java.SQL.Date(date.getTime());  //date是java.util.Date对象
    Time sqlTime=new Time(date.getTime());  //java.sql.Time
    String strDate=sqlDate.toString()+" "+sqlTime.toString(); //这个就是yyyy-MM-dd HH:mm当然 你完全可以用java.util.Date的getXXX()方法来构件一个字符串 不过好象getYear()不是从公元元年开始计算的 其他的也是要看看他们的基准日期最好的 用Hibernate框架 可以直接存取Date对象 会方便很多
      

  8.   

    用zhanghaotao()的方法可以得到时间字符串对应的Date对象再按照指定模式串构造一个SimpleDateFormat对象,调用其format(Date date)方法,将Date对象转换成想要的字符串格式如:
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                                               //该模式串与要转换的原始时间串对应,如下
    String time = "2007-08-13 11:25";
    Date date = sdf.parse(time);
    SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");
                                          //该模式串为要将Date类型转换成的时间字符串格式
    String timeStr=sdf2.format(date);timeStr就应该为“2007-08-13”。
      

  9.   

    >>PreparedStatement ps = db.getPreparedStatement(sql);
    >>ps.setDate(1, Date.valueOf(aa));//maff.format(aa).substring(0, 8)
    >>ps.setString(2, strTime);use ps.setTimestamp() instead of ps.setDate(),
    just hava a try.
    maybe it works.
      

  10.   

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String strTime = sdf.format(new Date());
    字符串的格式如:2007-08-17 12:25:25
      

  11.   

    oracle
    SELECT to_date('200708131125','yyyymmddhh24mi') FROM dual;
      

  12.   

    在java中用format转换成sql可以插入的类型就可以了
    一般最好把时间做为string  这样比较好实现
      

  13.   

    呵呵,我最后也是用String格式。来操作时间的。因为在数据库中有对时间很多的限制。很不好操作。   呵呵!!!!   谢谢各位了!!!