java sql - 将时间戳插入sql数据库

Posted

技术标签:

【中文标题】java sql - 将时间戳插入sql数据库【英文标题】:java sql - insert timestamp into sql database 【发布时间】:2015-04-07 14:24:30 【问题描述】:

我正在尝试将时间戳插入数据库,但我的代码抛出了一个异常,告诉我这是我的 sql 语句的问题。

显示的异常信息是:

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

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

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

我很确定是时间戳导致了问题,因为其他两个只是一个字符串和一个整数。

我们将不胜感激任何有关使其工作的帮助。我需要将时间和日期都插入到数据库中以便以后进行比较。

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");
    

【问题讨论】:

DateTime 和 Timestamp 不一样,这可能是您的错误的来源 尝试打印出原始错误信息 - 它可以包含一些有用的信息。 看看***.com/a/3323870/579580你很可能会在那里找到答案 【参考方案1】:

TIMESTAMP 和 DATETIME 有不同的用途; TIMESTAMP 用于自动时间戳。

java.util.Date starttijd = new java.util.Date(System.currentTimeMillis());
java.util.Date starttijd = new java.util.Date(); // Or this

我猜你是在 Timestamp 出现的,因为 java.sql.Date 通过将时间部分设置为零来包装 java.util.Date

如果数据库服务器的时间是正确的,也可以这样做:

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

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

【讨论】:

以上是关于java sql - 将时间戳插入sql数据库的主要内容,如果未能解决你的问题,请参考以下文章

java.sql.SQLException:ORA-00932:不一致的数据类型:预期 DATE 在插入 Null 时间戳时得到 BINARY

如何将格式为“3/22/2018 12:24:29 PM”的日期时间字符串格式化为sql时间戳以插入内存数据库中的h2?

在oracle 10g sql plus中将日期和时间插入时间戳

如何使用 clojure.java.jdbc 插入包含时间戳值的行?

SQL Server 2008 行插入和更新时间戳

SQL Server INSERT时间戳插入其他内容[重复]