文档章节

[mysql]java.sql.SQLException: Value'0000-00-00'异常解决办法

卯金刀GG
 卯金刀GG
发布于 2017/09/07 17:26
字数 443
阅读 20
收藏 0

今天使用ssm做开发的时候,使用的是mysql数据库,其中一个表的字段是Date类型,如果该字段有值,切是日期类型的时候,显示没有问题;但是,如果是空的情况就会报错。1、解决思路  map.xml中的返回值设置成resultType="hashmap",这样就不用考虑返回为空的情况了,返回的类型map<string, object>,结果还是报错。2、把返回值设置成类,新建一个类,使用string类型代替date类型,报以上错误

Value '0000-00-00' can not be represented as java.sql.Date

解决办法:

给jdbc   url加上   zeroDateTimeBehavior参数:
datasource.url=jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true

zeroDateTimeBehavior=round是为了指定MySql中的DateTime字段默认值查询时的处理方式;默认是抛出异常,

对于值为0000-00-00   00:00:00(默认值)的纪录,如下两种配置,会返回不同的结果:

zeroDateTimeBehavior=round   0001-01-01   00:00:00.0


zeroDateTimeBehavior=convertToNull   null  

 

原文如下:

 

 

 

Datetimes with all-zero components (0000-00-00 ...) — These values can not be represented reliably in Java. Connector/J 3.0.x always converted them to NULL when being read from a ResultSet.

 

Connector/J 3.1 throws an exception by default when these values are encountered as this is the most correct behavior according to the JDBC and SQL standards. This behavior can be modified using the zeroDateTimeBehavior configuration property. The allowable values are:

  • exception (the default), which throws an SQLException with an SQLState of S1009.

  • convertToNull, which returns NULL instead of the date.

  • round, which rounds the date to the nearest closest value which is 0001-01-01.

Starting with Connector/J 3.1.7, ResultSet.getString() can be decoupled from this behavior via noDatetimeStringSync=true (the default value is false) so that you can retrieve the unaltered all-zero value as a String. It should be noted that this also precludes using any time zone conversions, therefore the driver will not allow you to enable noDatetimeStringSync and useTimezone at the same time.

 

 

参考文档:

http://www.cnblogs.com/zhanglm125/p/4221344.html

 

© 著作权归作者所有

共有 人打赏支持
卯金刀GG
粉丝 20
博文 227
码字总数 51168
作品 0
昌平
程序员
私信 提问
java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp

版权声明:本文为 testcsdn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/testcsdn/article/details/50015665 详细错误信息:...

微wx笑
2015/11/24
0
0
java连接MySql数据库 zeroDateTimeBehavior

链接:http://2820354.blog.51cto.com/2810354/793574 JAVA连接MySQL数据库,在操作值为0的timestamp类型时不能正确的处理,而是默认抛出一个异常,就是所见的:java.sql.SQLException: Cann...

Atom_me
2015/07/16
4.2K
0
MYSQL数据库Timestamp类型为空抛异常问题的处理

今天开发时出现如下图的一个错误: 错误原因为:java 链接MYSQL数据库,在日期操作值为0的 timeStamp类型时,不能正确的处理,就是所见的: java.sql.SQLException: Cannot convert value '0...

费氏家族
2017/10/24
0
0
java--jdbc连接数据库参数(针对url)

如下是连接地址 理解: 1.mysql:指的数据库是mysql 2.192.168.2.11:3306 数据库服务器地址,数据库端口号是3306 3.missbang_db:指的是数据库名称 4.useUnicode:是否使用useUnicode字符集,...

求是科技
2016/09/07
19
0
mysql解决Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp

  同步发布:http://www.yuanrengu.com/index.php/mysqlsolvetimestamp.html   在使用mysql时,如果数据库中的字段类型是timestamp,默认为0000-00-00,会发生异常:Value ‘0000-00-00 00...

夏雪冬日
2016/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7 部署Apache服务器

centos7 部署Apache服务器 置顶 2017年09月05日 09:12:49 师太,老衲把持不住了 阅读数:19700 飞翔科技 2017-09-04 16:24 Apache程序是目前拥有很高市场占有率的Web服务程序之一,其跨平台和...

linjin200
41分钟前
1
0
CENTOS7 搭建文件服务器:samba共享linux文件夹

一、安装samba: sudo yum install samba 二、配置samba共享目录 sudo vi /etc/samba/smb.conf [rpi_web_notebooks] comment = 树莓派jupyter notebook目录 path = /home/......

mbzhong
51分钟前
2
0
解析Nuxt.js Vue服务端渲染摸索

本篇文章主要介绍了详解Nuxt.js Vue服务端渲染摸索,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 Nuxt.js 十分简单易用。一个简...

前端攻城老湿
今天
4
0
深入解析React中的元素、组件、实例和节点

React 深入系列,深入讲解了React中的重点概念、特性和模式等,旨在帮助大家加深对React的理解,以及在项目中更加灵活地使用React。 React 中的元素、组件、实例和节点,是React中关系密切的...

前端攻城小牛
今天
6
0
菜鸟网络三面面经(java开发岗):Spring boot+JVM+线程池+中间件

一面 1、HaspMap底层原理?HaspTable和ConcurrentHashMap他们之间的相同点和不同点? 2、由上题提到锁的问题 3、MySQL的表锁&行锁&乐观锁&悲观锁,各自的使用场景 4、Java线程锁有哪些,各自的...

别打我会飞
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部