java sql-在sql数据库中插入时间戳

java sql-在sql数据库中插入时间戳,java,mysql,sql,Java,Mysql,Sql,我试图在数据库中插入一个时间戳,但我的代码抛出了一个异常,它告诉我这与我的sql语句有关 显示的异常消息是: “Rit_ToevoegenController.okKnop()中的Fout:RitDB.voegRitToe()语句中的SQLException” okKnop是另一个调用voegRitToe()的方法 名为“starttijd”的列的类型是TIMESTAMP,DB数据类型是DateTime 我相当确定是时间戳导致了问题,因为其他2个只是一个字符串和一个int 如果您能为我们提供帮助

我试图在数据库中插入一个时间戳,但我的代码抛出了一个异常,它告诉我这与我的sql语句有关

显示的异常消息是:

“Rit_ToevoegenController.okKnop()中的Fout:RitDB.voegRitToe()语句中的SQLException”

okKnop是另一个调用voegRitToe()的方法

名为“starttijd”的列的类型是TIMESTAMP,DB数据类型是DateTime

我相当确定是时间戳导致了问题,因为其他2个只是一个字符串和一个int

如果您能为我们提供帮助,我们将不胜感激。我需要将时间和日期都插入数据库,以便以后比较

public void voegRitToe(Rit r) throws DBException{
    Timestamp starttijd = new Timestamp(System.currentTimeMillis());
    //Date date = new Date(starttijd.getTime());

    try(Connection conn = ConnectionManager.getConnection();){
        try(PreparedStatement stmt = conn.prepareStatement("insert into rit(starttijd, lid_rijksregisternummer, fiets_registratienummer) values(?,?,?)");){
            stmt.setTimestamp(1, starttijd);
            stmt.setString(2, r.getLid().getRegisterNr());
            stmt.setInt(3, r.getFiets().getRegisNr());
            stmt.execute();
        }
        catch(SQLException sqlEx){
            throw new DBException("SQLException in RitDB.voegRitToe() - statement");
        }

    }
    catch(SQLException sqlEx){
        throw new DBException("SQLException in RitDB.voegRitToe() - verbinding");
    }
}

时间戳和日期时间有不同的用途;时间戳用于自动时间戳

java.util.Date starttijd = new java.util.Date(System.currentTimeMillis());
java.util.Date starttijd = new java.util.Date(); // Or this
我猜您是在时间戳时来的,因为
java.sql.Date
wrapps
java.util.Date
将时间部分设置为零

如果数据库服务器的时间正确,还可以执行以下操作:

... VALUES(NOW(), ?, ?)

顺便说一下,如果您有一个兼容java 8的驱动程序,java 8引入了新的日期/时间类并“改进”了JDBC的使用。

日期时间和时间戳不一样,这可能是您的错误的来源尝试打印原始错误消息-它可能包含一些有用的信息。请检查此项,您很可能会在那里找到您的答案