我无法更新我的日期列?错误:datatruncation

时间:2015-05-31 06:39:36

标签: java sql

列的#SQL数据类型" LOGINDATE"是日期。为什么我会收到此错误?

private void compareDate(){
    sql = "Select curdate()";
    Date currentDate = lastLogin;
    try{
        ps = con.prepareStatement(sql);
        rs = ps.executeQuery();
        while(rs.next()){
            currentDate = rs.getDate(1);
        }
    }catch(SQLException e){
        System.out.println(e);
    }

    if(currentDate.compareTo(lastLogin) == 1){
        System.out.println(currentDate);
        System.out.println(lastLogin);
        sql = "UPDATE CUSTOMERS SET LOGINDATE="+currentDate+", NFLIXCREDIT=3 WHERE USERNAME='"+username+"'";
        try{
            ps = con.prepareStatement(sql);
            ps.executeUpdate();
        }catch(SQLException e){
            System.out.println(e);
        }
    }
}

二零一五年五月三十零日

2015年5月29日

错误 -

  

com.mysql.jdbc.MysqlDataTruncation:数据截断:日期不正确   价值:' 1980'对于专栏' LOGINDATE'在第1行

2 个答案:

答案 0 :(得分:1)

您使用的是未准备好的声明。

更改为

   sql = "UPDATE CUSTOMERS SET LOGINDATE=?, NFLIXCREDIT=3 WHERE USERNAME=?";
    try{
        ps = con.prepareStatement(sql);
        ps.setDate(1,currentDate);
        ps.setString(2,username);
        ps.executeUpdate();
    }catch(SQLException e){

在您的情况下,将调用toString()日期方法,然后您的日期为长

答案 1 :(得分:0)

使用准备好的声明是最佳选择。

另一种选择是用'':

包装日期
UPDATE CUSTOMERS SET LOGINDATE='2015-05-30', NFLIXCREDIT=3...