JDBC DATE 格式错误
我试图从数据库中读取多个日期,但在某些情况下我收到“java.sql.SQLException Bad format for DATE”。这是我的代码:
Date entryDateD = res.getDate("entryDate");
在调试模式下,我看到entryDateD'1996-9-15'的内容与我的数据库中一样。 尽管我不得不提一下,我也从数据库中读取了其他日期,我注意到这些日期的格式为“xxxx-0y-zz”。我想说的是,如果一个月小于 10,则在其前面添加一个零,在这种情况下不添加零。我怀疑这可能与此有关。 (这个零不会出现在数据库本身中,不仅出现在这个日期,而且出现在任何日期) 提前谢谢:)
I am trying to read several dates from my database but under certain circumstances I get a ' java.sql.SQLException Bad format for DATE'. Here is my code :
Date entryDateD = res.getDate("entryDate");
In debug mode I see that the content of entryDateD '1996-9-15' as is in my database..
Although I would have to mention that I read other dates too from my database which I notice are of the format 'xxxx-0y-zz'. What I want to say is that in case of a month being less than 10 there is a zero added in front of it which in this case is not added. I suspect that this might have something to do with it.
(this zero does not appear in the database itself though not only in this date but in any date)
thanx in advance :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
只是猜测,但是你的entryDate 有什么MySQL 列类型?
默认情况下,MySQL 中的日期类型会生成 yyyy-mm--dd 格式;缺少零让我相信列类型可能是 varchar 或数据库级别的其他非日期类型。
这可能是 Java 级别出现问题的原因......
Just a guess, but what MySQL column type do you have for entryDate??
By default a date type in MySQL will generate an yyyy-mm--dd format; the missing zero leads me to believe that the column type may be varchar or other non-date type at DB level.
This could be the cause of your problems at Java level...
如果将其表示为 java.util.Date,则具有允许 JDBC 驱动程序担心处理数据库的任何格式问题的优点。
至于如何在显示器中呈现它,这取决于您和您对 java.text.DateFormat 类的使用。
您在应用程序中将日期表示为
java.util.Date
是正确的做法,但您需要了解格式设置是与类型不同的问题。If you represent it as
java.util.Date
, you have the advantage of allowing the JDBC driver to worry about handling any format issues with the database.As for how it's rendered in your display, that's up to you and your use of the
java.text.DateFormat
class.You're doing the right thing by representing a date as
java.util.Date
in your app, but you need to understand that formatting is a separate issue from the type.Java 有一个 java.util.Date 的子类,名为 java.sql.Date
创建 Java SQL 日期的最简单方法是使用实用程序日期调用构造函数。
Java has a child class of java.util.Date, called java.sql.Date
The easiest way to create a Java SQL Date is by calling the constructor with a Utility Date.
如果您想将
res.getDate("entryDate")
获取为 YYYY-MM-DD 那么您需要在查询中将其转换为日期,如下所示:如果您有这样的感觉有帮助,然后进行投票以使其对其他人有用。
If you want to get
res.getDate("entryDate")
as YYYY-MM-DD then you need to cast as date in your query like this:If you feel this is helpful then do upVote to make it useful for others.