获取异常'0000-00-00'不能表示为java.sql.Date即使我使用的是resultset.getString()方法

时间:2014-01-02 11:05:41

标签: java mysql sql

我有一个数据库表,其结构如下:

enter image description here

要检索我使用过查询Select * from mytable

的数据

在java中我使用的是resultset rs

我的代码是

if(rs.next())
{
    str[0] = rs.getString("id").trim();
    str[1] = rs.getString("userid").trim();
    str[2] = rs.getString("keyword").trim();
    str[3] = rs.getString("field").trim();
    str[4] = rs.getString("type").trim();
    str[5] = rs.getString("assignee").trim();
    str[6] = rs.getString("category").trim();
    str[7] = rs.getString("subcategory").trim();
    str[8] = rs.getString("publicationDateFrom").trim();
    str[9] = rs.getString("publicationDateTo").trim();
    str[10] = rs.getString("date").trim();
    str[11] = rs.getString("time").trim();
    str[12] = rs.getString("assigneeNames").trim();
    str[13] = rs.getString("categoryNames").trim();
    str[14] = rs.getString("subcategoryNames").trim();              
}

问题是我总是得到例外

Value '0000-00-00' can not be represented as java.sql.Date[Ljava.lang.StackTraceElement;@42c7d3

请指出我正确的方向。

3 个答案:

答案 0 :(得分:3)

您需要将zeroDateTimeBehavior=convertToNull添加到您的mysql连接URI。查看here了解详情

答案 1 :(得分:0)

首先做一件事...... 将列更改为可为空并使用以下代码从结果集中获取数据

str[10] = rs.getTimestamp("date").toString();

答案 2 :(得分:0)

使用 -

启动mySql
--sql_mode="NO_ZERO_DATE" --sql_mode="STRICT_ALL_TABLES"

然后使用getString获取您的日期并使用DateFormat进行解析。然后在ResultSet中获取它。