JDBC DATE的格式错误

时间:2011-05-22 15:17:40

标签: java mysql exception jdbc

我正在尝试从我的数据库中读取几个日期,但在某些情况下,我得到了'DATE'的'java.sql.SQLException错误格式'。这是我的代码:

Date entryDateD = res.getDate("entryDate");

在调试模式下,我看到entryDateD'1996-9-15'的内容在我的数据库中。 虽然我不得不提到我也从我的数据库中读到了其他日期,我注意到格式为'xxxx-0y-zz'。我想说的是,如果一个月小于10,则在它前面添加一个零,在这种情况下不添加。我怀疑这可能与它有关。 (这个零不出现在数据库本身,不仅在这个日期,而且在任何日期) 提前谢谢:)

4 个答案:

答案 0 :(得分:2)

如果将其表示为java.util.Date,则可以让JDBC驱动程序担心处理数据库的任何格式问题。

至于它在你的显示器中的呈现方式,这取决于你和你对java.text.DateFormat类的使用。

您通过在应用中将日期表示为java.util.Date来做正确的事情,但您需要了解格式是与该类型不同的问题。

答案 1 :(得分:2)

只是一个猜测,但是你对entryDate有什么MySQL列类型?

默认情况下,MySQL中的日期类型将生成yyyy-mm-dd格式;缺少的零使我相信列类型可能是数据库级别的varchar或其他非日期类型。

这可能是您在Java级别出现问题的原因......

答案 2 :(得分:0)

Java有一个java.util.Date子类,名为java.sql.Date

创建Java SQL Date的最简单方法是使用Utility Date调用构造函数。

java.util.Date uDate = res.getDate("entryDate");
java.sql.Date sDate  = new java.sql.Date(uDate.getTime());

答案 3 :(得分:0)

如果您希望res.getDate("entryDate") YYYY-MM-DD ,则需要在查询中投放日期,如下所示:

SELECT
...
CAST(entryDate as DATE)as entryDate,
...
FROM your_table;

如果您认为这有用,那么请执行upVote以使其对其他人有用。