2011-05-22 69 views
1

JDBC的格式错误,我试图读取从我的数据库中的几个日期,但在某些情况下,我收到了“为DATE java.sql.SQLException中的格式错误”。这里是我的代码:为DATE

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

在调试模式下我看到entryDateD“1996年9月15日”的内容,是在我的数据库.. 虽然我就不得不提一下,我从阅读其他日期太我注意到我的数据库格式为'xxxx-0y-zz'。我想说的是,如果月份小于10,那么在它前面添加一个零,在这种情况下不添加。我怀疑这可能与它有关。 如果其表示为java.util.Date(这种零不会出现在数据库本身虽然不是只有在这个日期,但在任何日期) thanx提前:)

+1

刺在黑暗中,但什么MySQL的列类型是entryDate?默认情况下,日期列将生成yyyy-mm-dd格式,因此缺少的零使我相信列类型可能是varchar或数据库级别的其他非日期类型。 – virtualeyes 2011-05-22 15:32:28

+0

omg youre其实是对的! thanx这么多! 以及它使得它看起来像一个非常愚蠢的问题,但现在它保留我给了它每隔输入satanicaly工作! 该死的你墨菲定律! – jaivalis 2011-05-22 15:34:41

+0

形成你的评论作为答案,所以我可以接受它,如果你想:) – jaivalis 2011-05-22 15:38:51

回答

2

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

默认情况下在MySQL日期类型将产生一个YYYY-MM - dd格式;缺少的零使我相信在DB级别列类型可能是varchar或其他非日期类型。

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

2

,你必须让JDBC驱动程序而烦恼的优势关于处理数据库的任何格式问题。

至于它是如何在你的显示器呈现的,这是给你和你的java.text.DateFormat类的使用。

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

+0

哦,不,这不是这样做。 – duffymo 2011-05-22 16:20:18

0

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

创建一个Java SQL日期是最简单的方法通过用Utility Date调用构造函数。

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

如果你想获得res.getDate("entryDate")YYYY-MM-DD,那么你需要转换为日期查询这样的:

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

如果你觉得这是有帮助的,然后做给予好评使其对其他人有用。