文档章节

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

卯金刀GG
 卯金刀GG
发布于 2017/09/07 17:26
字数 443
阅读 18
收藏 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
博文 219
码字总数 48760
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

w, vmstat, top, sar, nload命令查看系统状态信息

w/uptime 查看系统负载 cat /proc/cpuinfo 查看cpu核数 vmstat 监控系统状态,用法 vmstat 1,关键的几列: r, b, swpd, si, so, bi, bo, us, wa top 查看进程使用资源情况 top -c 显示详细的...

野雪球
30分钟前
0
0
小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
今天
2
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
2
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
3
0
大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部