为什么以下查询会返回此错误消息:'数据异常:无效的日期时间格式'?我研究了这个并且似乎没有任何问题吗?
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());
}
}
答案 0 :(得分:1)
似乎您尝试将releaseDate
分配到 CellPhoneNum ,将num
分配给 DateTakenOut 。
尝试
statement.setString(2, num);
statement.setDate(3,releaseDate);
答案 1 :(得分:0)
您正在混合日期和时间信息的格式,因此格式无效......一个是“长”,一个不是。如果有的话,看不到声明的类型。
今天是一个util.Date 见http://docs.oracle.com/javase/7/docs/api/java/util/Date.html
long getTime()返回自此Date对象表示的自1970年1月1日00:00:00 GMT>以来的毫秒数。
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数据库通信,而实用程序。日期不是。跨不同的数据库系统不容易处理时间。你引用的long类型就像计时器一样计算毫秒......这个计时器始于1970年,因为世纪之交的Y2K问题。它允许在这种规模上进行比较。请注意有关在不同时间长度内有多少毫秒的文档...