博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Value '0000-00-00' can not be represented as java.sql.Date(转)
阅读量:2351 次
发布时间:2019-05-10

本文共 1139 字,大约阅读时间需要 3 分钟。

转自:

 

java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp

问题描述,在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

 

这样有可能会报新的Exception:

The reference to entity "characterEncoding" must end with the ';' delimiter  

其原因可能是在Properties文件或者xml文件中忘记进行特殊符号的转译了,

jdbc:mysql://192.168.1.155:3306/diandi?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull

需要改为:

jdbc:mysql://192.168.1.155:3306/diandi?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull 

 

有以下几类字符要进行转义替换:

 

 

 

<

 

<

 

小于号

 

&gt;

 

>

 

大于号

 

&amp;

 

&

 

 

&apos;

 

'

 

单引号

 

&quot;

 

"

 

双引号

 

 

转载地址:http://phevb.baihongyu.com/

你可能感兴趣的文章
循环链表实现增、删、改、查等功能
查看>>
Android实现超链接和跑马灯
查看>>
实现二叉树先序、中序、后序遍历
查看>>
Socket客户端服务器连接
查看>>
简单字符设备驱动程序的操作步骤
查看>>
视频压缩:I帧、P帧、B帧
查看>>
视频编解码基础一
查看>>
视频编码学习二
查看>>
视频处理
查看>>
Python的安装教程
查看>>
谈谈码率、帧率、分辨率和清晰度
查看>>
OSI参考模型通信举例
查看>>
Vue.js 入门学习(一)
查看>>
Vue.js入门学习(二)实例、数据绑定、计算属性
查看>>
Vue.js入门学习(三) Class与Style绑定
查看>>
Vue.js入门学习(五)方法与事件处理器、表单控件绑定
查看>>
项目:Vue.js高仿饿了吗外卖APP(一)
查看>>
javascript中一些相对位置
查看>>
vue高仿饿了么课程项目--布局篇学习笔记
查看>>
es6 javascript的Iterator 和 for...of 循环
查看>>