【发布时间】:2012-11-17 23:55:18
【问题描述】:
我遇到了这个异常:
java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Date
源自此代码:
Date internalDate = rs.getDate(idx++);
其中rs 是ResultSet。
所以这对我来说很好 - 我知道数据库中有零日期,我需要能够读取这些日期并将它们转换为下游数据结构中的适当(可能为空)数据。问题是我不知道如何检索它并得到一个“软”错误。我曾考虑将这一行包装在 SQLException 的 try/catch 中,但理解这会破坏 ResultSet 的有效性。
是否可以在不抛出 SQLException 的情况下以其他方式读取此值?
【问题讨论】:
-
我不记得我的头顶了,但你不能先使用
rs.getString(),检查是否为'0000-00-00',然后使用getDate()?跨度> -
为什么不直接更新数据库中的值。毕竟
0000-00-00不是一个有效的日期,一开始就不应该被存储。 -
@a_horse_with_no_name - 基本上是的,我想这样做,但这是一个我们无法轻松修改的巨大表。所以我会选择你或 Bohemian 建议的补丁之一。