文档章节

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

卯金刀GG
 卯金刀GG
发布于 2017/09/07 17:26
字数 443
阅读 15
收藏 0
点赞 0
评论 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
粉丝 16
博文 198
码字总数 35161
作品 0
昌平
程序员
java连接MySql数据库 zeroDateTimeBehavior

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

Atom_me ⋅ 2015/07/16 ⋅ 0

java--jdbc连接数据库参数(针对url)

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

求是科技 ⋅ 2016/09/07 ⋅ 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

[DEBUG] “java.sql.SQLException: Value '0000-00-...

使用hibernate开发程序的时候,有的时间字段没有必要填写,但是,以后hibernate查询的时候会报出 “java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timest...

jiyayun ⋅ 2012/10/25 ⋅ 0

Cannot convert value '0000-00-00 00:00:00' from co

问题:MySQL数据库,如果数据库中日期字段为空为值为'0000-00-00 00:00:00"时,查询的时候回报:Cannot convert value '0000-00-00 00:00:00' from column 10 to TIMESTAMP 解决办法: 更改连接...

Coder_葉 ⋅ 2016/03/22 ⋅ 0

mysql数据库时间字段CURRENT_TIME问题

一、背景 进入产品迭代阶段,修改数据库字段是难免的。除了我们能够想到的,新增字段,一定要设置为“允许为空”或者设置“默认值”,当涉及到mysql的时间字段时,也要格外小心。 下面是报错...

降龙罗汉 ⋅ 2015/10/16 ⋅ 2

ERROR 1067 (42000): Invalid default value for 'end_time'

版本:mysql5.7 执行sql: CREATE TABLE seckill( BIGINT NOT NUll AUTO_INCREMENT COMMENT '商品库存ID', VARCHAR(120) NOT NULL COMMENT '商品名称', int NOT NULL COMMENT '库存数量', TIME......

sun2shadows ⋅ 2017/09/13 ⋅ 0

zeroDateTimeBehavior=convertToNull

针对以下这个,我觉得这样做是可取的: 3)每个字段尽量设置不可为空,对于有些业务比如订单的出仓时间确实需要等到出仓扫描时才有值的可以允许为空; 供参考的解决方案: 全部字段都设置为n...

之渊 ⋅ 2016/09/17 ⋅ 0

问题记录:[Sqoop]

Sqoop在导入MySQL数据时遇到Timestamp列为空时报错,解决方法是:在JDBC连接后加上?zeroDateTimeBehavior=convertToNull Sqoop在导入MySQL数据时遇到Timestamp列为空时报错,解决方法是:在J...

孤岛旭日 ⋅ 2016/01/29 ⋅ 0

由mysql的 datetime 类型字段默认设置为了'0000-00-00' 引发的血案

一、错误信息 Java连接数据库转化为对象时报以下错误信息: Error querying database. Cause:java.sql.SQLException: Value '0000-00-00 00:00:00'can not be represented as java.sql.Time......

二两豆腐 ⋅ 2016/03/18 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

说说javascript中的那些专业名词

DOM(Document Object Model) 文档对象模型 BOM(Browser Object Model) 浏览器对象模型 ECMA(European Computer Manufacturer's Association) 欧洲计算机制造商协会 W3C(World Wide Web Conso......

hang1989 ⋅ 28分钟前 ⋅ 0

Bootstrap Wizard 多步表单控件

废话 有一块需求是 有多步表单 点击下一步时触发验证一个范围内的表单,点击上一步或取消,清空表单并返回第一步,点击最后一步提交整个表单的 就找到了这个插件,本来自己写了一个原生的 fo...

无极之岚 ⋅ 44分钟前 ⋅ 0

如何利用Spring Cloud构建起自我修复型分布式系统

利用Netflix所打造的组件及各类大家熟知的工具,我们完全可以顺利应对由微服务以及分布式计算所带来的技术挑战。 在过去一年当中,微服务已经成为软件架构领域一个炙手可热的新名词,而且我们...

harries ⋅ 今天 ⋅ 0

临近实习前的感想

再过两星期就要开始新的一段实习了,想想去年的这个时候也在实习,心中不免思绪万千,也一直想写对2017做个总结,但一直迟迟没有下笔。 2017年的春节,我就开始准备开学后找份实习。那时候就...

无精疯 ⋅ 今天 ⋅ 0

Spring AOP(面向切面编程)

Spring AOP概念: Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能。通常情况下,AOP把项目中需要在多处用到的功能,比如日志、安全和事物等集中到一个类中处理,而...

霍淇滨 ⋅ 今天 ⋅ 0

人工智能、机器学习、数据挖掘以及数据分析有什么联系?

人工智能是目前炙手可热的一个领域,所有的互联网公司以及各路大迦们纷纷表态人工智能将是下一个时代的革命性技术,可与互联网、移动互联网时代的变更相媲美;AlphaGo在围棋领域战胜人类最顶...

董黎明 ⋅ 今天 ⋅ 0

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 今天 ⋅ 0

设计模式 之 享元模式

设计模式 之 享元模式 定义 使用共享技术来有效地支持大量细粒度对象的复用 关键点:防止类多次创建,造成内存溢出; 使用享元模式来将内部状态与外部状态进行分离,在循环创建对象的环境下,...

GMarshal ⋅ 今天 ⋅ 0

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 今天 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部