繁体   English   中英

从util.Date到sql.Date的转换不起作用

[英]conversion from util.Date to sql.Date not working

为什么以下查询返回此错误消息:“数据异常:无效的日期时间格式”? 我对此进行了研究,似乎没有什么不对吗?

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());
    }
}

似乎你分配releaseDateCellPhoneNumnumDateTakenOut。

尝试

statement.setString(2, num);    
statement.setDate(3,releaseDate);

您正在混合如何格式化日期和时间信息,因此格式无效……一种是“长”格式,而另一种则不是。 看不到声明的类型。

今天是util.Date,请参阅http://docs.oracle.com/javase/7/docs/api/java/util/Date.html

long getTime()返回自此Date对象表示的自1970年1月1日格林尼治标准时间00:00:00以来的毫秒数。

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问题。 它允许以此规模进行比较。 请注意有关各种长度的毫秒数的文档...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM