如何解决这个日期问题?

时间:2019-05-05 07:16:21

标签: java

我正在开发netbeans 8.并插入带有日期的数据错误。

我在jtable中有日期值。我尝试使用for循环在jtable中插入行,并以dd-MM-yyyy格式插入DATE值。

    try {
        for (int i = 0; i < tbcustomer.getRowCount(); i++) {                
            dateformater = new SimpleDateFormat("yyyy-MM-dd");
            sql = "insert into tbcustomerdetail values(?,?,?,?,?,?,?,?,?,?)";
            pst = con.prepareStatement(sql);
            pst.setString(1, textid.getText());
            pst.setString(2, tbcustomer.getValueAt(i, 1).toString());
            pst.setString(3, tbcustomer.getValueAt(i, 2).toString());
            pst.setString(4, tbcustomer.getValueAt(i, 3).toString());
            pst.setString(6, tbcustomer.getValueAt(i, 5).toString());
            pst.setString(7, tbcustomer.getValueAt(i, 6).toString());

            //Test case 1
            //                pst.setString(5, dateformater.format(tbcustomer.getValueAt(i, 4)));

            //try secode case

           //                String date=tbcustomer.getValueAt(i, 4).toString();
           //                Date date1=new SimpleDateFormat("dd-MM-yyyy").parse(date);
           //                JOptionPane.showMessageDialog(null, date1);
           //                pst.setString(5, dateformater.format(date1));


            pst.setString(8, tbcustomer.getValueAt(i, 7).toString());
            pst.setString(9, tbcustomer.getValueAt(i, 8).toString());
            pst.setInt(10, 1);
            pst.execute();
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

此行错误

    com.microsoft.sqlserver.jdbc.SQLServerException: Conversion failed when converting date and/or time from character string.

非常感谢。

1 个答案:

答案 0 :(得分:0)

更新

可能更好的方法是像代码中那样将日期转换为日期,然后使用setDate方法

String date = tbcustomer.getValueAt(i, 4).toString();
Date date1=new SimpleDateFormat("dd-MM-yyyy").parse(date);
pst.setDate(5, date1);

改为在sql中进行转换

sql = "insert into tbcustomerdetail values(?,?,?,?, CONVERT(DATE, ?, 105),?,?,?,?,?)";

并完全按照日期发送日期字符串

pst.setString(5, tbcustomer.getValueAt(i, 4).toString());