如果我try 这样做,我会遇到一个例外(见下文)

resultset.getString("add_date");

对于包含日期时间值0000-00-00 00 00:00:00(DATETIME的准空值)的MySQL数据库的JDBC连接,尽管我只是try 以字符串而不是对象的形式获取该值.

我是通过这样做来解决这个问题的

SELECT CAST(add_date AS CHAR) as add_date

这很管用,但看起来很傻...有更好的方法吗?

我的意思是,我只需要原始的DATETIME字符串,这样我就可以自己解析它了.

note:这里是0000的来源:(从http://dev.mysql.com/doc/refman/5.0/en/datetime.html开始)

非法的日期时间、日期或时间戳

具体的例外是:

SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP.
SQLState: S1009
VendorError: 0
java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
    at com.mysql.jdbc.ResultSetImpl.getTimestampFromString(ResultSetImpl.java:6343)
    at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5670)
    at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5491)
    at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5531)

推荐答案

为了解决同样的问题,我偶然发现了这个问题.我正在使用的安装使用JBOSS和Hibernate,所以我不得不用另一种方式来完成.对于基本情况,您应该能够按照这个configuration properties page向您的连接URI添加zeroDateTimeBehavior=convertToNull.

我在全国各地找到了其他建议,涉及将该参数放入hibernate配置:

hibernate.cfg.xml年:

<property name="hibernate.connection.zeroDateTimeBehavior">convertToNull</property>

hibernate.properties年:

hibernate.connection.zeroDateTimeBehavior=convertToNull

但我不得不把它放在我的JBOSS mysql-ds.xml文件中:

<connection-property name="zeroDateTimeBehavior">convertToNull</connection-property>

希望这对某人有帮助.:)

Sql相关问答推荐

SQL查询视图与连接?

如何从多行数据中获取一行合并数据?

如何计算给定日期前三个月的值以及月初数据?

在xml.Modify方法中使用子字符串和可能的替代方法

ColdFusion+Docker:未安装SQLSERVER包

SQL Athena/prest判断值是否在嵌套的json数组中

提取连续时间戳范围的SQL

Haystack针相交-在元素最多的Haystack中查找集合

使用左外部联接更正列中第+1行的值时重复

插入具有预期逻辑的查询以Forking 表

删除行而不使数据库超载

匹配 H[0-9][0-9] 但不匹配除字母 H 之外的任何字母

复制行并根据 Oracle SQL 中其他表的值更改值

计算 BigQuery 中列的中值差 - 分析函数不能作为聚合函数的参数

使用 SQL 计算一年中任意 3 个月期间的总成本

oracle中多行的跨日期范围的交集

从 varchar 列中删除特殊字符后的前面的零和字符时遇到问题

获取 SQL Server 中每一行的两个-之间的文本

根据条件列出不同的值

如何使用 pg-promise 创建要在复杂的 sql 查询中使用的 VALUES 列表?