您好,欢迎访问一九零五行业门户网

MySQL查询默认时间抛出异常

创建了一个mysql表,表中有一个字段是date类型的,默认值时0000-00-00 00:00:00,查询的时候使用的是preparestatement,查询结果为
问题现象
创建了一个mysql表,,表中有一个字段是date类型的,默认值时0000-00-00 00:00:00,查询的时候使用的是preparestatement,查询结果为resultset,从结果中取出date字段使用的是resultset.getdate(xxxx), 结果会抛出异常:java.sql.sqlexception:value '0000-00-00' can not be represented as java.sql.date.
问题原因
mysql中date的默认值是0000-00-00 00:00:00,但是java.sql.date却认为这是一个不合法的值,所以会抛出上述异常。
解决方案
在mysql的连接的url中增加一个参数zerodatetimebehavior,这个参数可以指定遇到这样的默认值时将这个值转换为什么值。 有两种方案,一种是转换为0001-01-01 00:00:00, 另一种方案则直接转换为null. 依次对应的具体配置如下:
string url = jdbc:mysql://localhost:3306/test?zerodatetimebehavior=round;  // 转换为 0001-01-01 00:00:00
string url = jdbc:mysql://localhost:3306/test?zerodatetimebehavior=converttonull;  // 转换为null
本文永久更新链接地址:
其它类似信息

推荐信息