Java问题——can not be represented as java.sql.Date 错误解决
在java应用程序中,数据表中有记录的time字段(属性为timestamp)其值为:“0000-00-00 00:00:00”
程序使用select 语句从中取数据时出现以下异常:
java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date
这是因为 “0000-00-00 00:00:00”在mysql中是作为一个特殊值存在的,但是在Java中, java.sql.Date 会被视为 不合法的值,被JVM认为格式不正确。
解决办法:
在jdbc的url加上 zeroDateTimeBehavior参数:
datasource.url=jdbc:mysql://localhost:3306/pe?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNull
对于值为0000-00-00 00:00:00(默认值)的纪录,根据不同的配置,会返回不同的结果:
不配置:默认返回异常
zeroDateTimeBehavior=round 0001-01-01 00:00:00.0
zeroDateTimeBehavior=convertToNull null
JAVA连接MySQL数据库,在操作值为0的timestamp类型时不能正确的处理,而是默认抛出一个异常,就是所见的:java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 1 to TIMESTAMP。这一问题在官方文档中有详细说明,详见如下链接:
http://bugs.mysql.com/bug.php?id=19274
http://dev.mysql.com/doc/refman/5.5/en/connector-j-installing-upgrading.html
在JDBC连接串中有一项属性:zeroDateTimeBehavior,可以用来配置出现这种情况时的处理策略,该属性有下列三个属性值:
l exception:默认值,即抛出SQL state [S1009]. Cannot convert value....的异常;
l convertToNull:将日期转换成NULL值;
l round:替换成最近的日期即0001-01-01;
因此对于这类异常,可以考虑通过修改连接串,附加zeroDateTimeBehavior=convertToNull属性的方式予以规避,例如:
jdbc:mysql://localhost:3306/mydbname?zeroDateTimeBehavior=convertToNull
从另一个层面讲,这类异常的触发也与timestamp赋值的操作有关,如果能够在设计阶段和记录写入阶段做好逻辑判断,避免写入 '0000-00-00 00:00:00'这类值,那么也可以避免出现 Cannot convert value '0000-00-00 00:00:00' from column N to TIMESTAMP的错误
Java问题——can not be represented as java.sql.Date 错误解决相关推荐
- Error:java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major错误解决
Error:java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major错误解决 标签 ...
- FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset 错误解决
错误现象 FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset ...
- 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,默认为 ...
- 错误:Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp;的解决
问题: 代码中查询MySQL的结果集时报错,提示Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp;刚开始 ...
- 关于Value ‘0000-00-00 00:00:00‘ can not be represented as java.sql.Timestamp异常问题的解读
前提 对于必传的字段, 新需求改为非必填的时候,在测试环境出现了 Value '0000-00-00 00:00:00' can not be represented as java.sql.Time ...
- 解决java.sql.SQLException: Value ‘0000-00-00‘ can not be represented as java.sql.Date
java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Date 异常的解决方法 查询数据时候遇到这个 ...
- java.sql.SQLException: Value ”0000-00-00 00:00:00“ can not be represented as java.sql.Timestamp
java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp 分析: ...
- can not be represented as java.sql.Timestamp
使用hibernate开发程序的时候,有的时间字段没有必要填写,但是,以后hibernate查询的时候会报出 "java.sql.SQLException: Value '0000-00-0 ...
- 已解决:java.sql.SQLException: Value ‘0000-00-00 00:00:00‘ can not be represented as java.sql.Timestamp
一.问题 一大早到公司 Mysql 中的一个 datetime 字段时碰到了一个 Cause: java.sql.SQLException: Value '0000-00-00 00:00:00' c ...
最新文章
- kubernetes关键特性和概述
- 向阿里学数字化转型,驱动业绩新增长
- Python实现固定效应回归模型实现因果关系推断
- 智慧城市顶层设计方法_主頁
- chrome 插件开发心得
- mysql数据库运行远程用户访问不了_MySQL数据库远程访问权限如何打开(两种方法)...
- dataset存入mysql_将dataset写入数据库
- python 批量下载网页图片_Python实现多线程批量下载图片
- 学计算机与学英语作文,初二英语作文(关于计算机与学习)
- 使用Playwright对ASP.NET Core应用执行功能测试
- JAVA面试要点002_Git中fetch和pull的区别
- [转载] python随笔2(列表的增删改查)
- 鸿蒙系统麒麟970芯片支持,受鸿蒙系统影响,众多华为手机或要说再见,包括麒麟970机型!...
- 中国移动计算机二面笔试题,中国移动笔试面试经验
- 介绍一种养眼的IDEA/Pycharm/Clion配色方案
- 国家信息安全证书体系解读(nisp,cisp)
- HDU-6396-Swordsman(文件输入+优先队列)
- 程序员面试总结 (非原创)
- PCB板上的字母代表哪些元器件?一文看全!
- 第四周项目3---单链表的应用之连接
热门文章
- jmeter工具进行性能测试
- 实用:常用PPT国内外不错的网站介绍
- C++ Primer Plus(第六版)第四章编程练习参考答案
- vscode登陆中国版leetcode
- oracle rman crosscheck,rman的crosscheck命令
- python输出姓名_Python生成随机不重复姓名昵称
- 计算机考研各科目分值分布,2019考研各科目试卷分值分布及结构分析
- Ubuntu 16.04 系统 gflags glog 安装
- 研究生放假因疫情未按时返回,扣助研补贴!实验室奇葩规定引热议
- html渐变轮播,html简单的渐变轮播插件