您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL查询默认时间抛出异常

2025/6/16 9:37:29发布16次查看
创建了一个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
本文永久更新链接地址:
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product