0

为什么以下查询会返回此错误消息:“数据异常:无效的日期时间格式”?我研究过这个,似乎没有什么问题?

java.util.Date today = new java.util.Date(); 
releaseDate = new java.sql.Date(today.getTime());
qtd.updateTakenOutTable("insert into takenOutTbl (MovieID, CellPhoneNum, DateTakenOut) VALUES ( ?,      ?, ?)", movieID, num, releaseDate); 

这是方法:

public void updateTakenOutTable(String update, String movieID, String num, java.sql.Date releaseDate) throws SQLException {
    try {
        Connection connection = dc.DatabaseConnection();
        PreparedStatement statement = connection.prepareStatement(update);
        statement.setString(1, movieID);
        statement.setDate(2,releaseDate);
        statement.setString(3, num);
        statement.executeUpdate();
        statement.close();

    } catch (SQLException ex) {
        System.err.println(ex.getMessage());
    }
}
4

2 回答 2

1

似乎您正在尝试分配releaseDateCellPhoneNumnumDateTakenOut 。

尝试

statement.setString(2, num);    
statement.setDate(3,releaseDate);
于 2014-08-06T02:03:53.107 回答
0

您正在混合日期和时间信息的格式,因此格式无效......一种是“长”的,一种不是。如果有的话,看不到声明的类型。

今天是 util.Date 见 http://docs.oracle.com/javase/7/docs/api/java/util/Date.html

long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT > 由此 Date 对象表示的毫秒数。

releaseDate是一个 sql.Date http://docs.oracle.com/javase/7/docs/api/java/sql/class-use/Date.html#java.sql

仔细阅读本文档,您会发现该类型从不表示为“long”。

如果您想要一个面向 sql 的时间,也许您更愿意使用 ... sql.time?这在 docs.oracle 上有自己的页面。

sql.date 和 sql.time 用于与 SQL 数据库通信,而实用程序。日期不是。跨不同的数据库系统处理时间并不容易。您引用的长类型是像计时器一样计数毫秒......这个计时器始于 1970 年,用于世纪之交的 Y2K 问题。它允许在这个尺度上进行比较。请注意有关不同时间长度中有多少毫秒的文档...

于 2014-08-06T01:14:01.677 回答