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

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

时间 2014-07-30 09:00:50 ITeye-博客

原文  http://josh-persistence.iteye.com/blog/2098415

主题 Java SQL

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;


"


双引号

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

时间: 2024-10-17 12:22:15

Value '0000-00-00' can not be represented as java.sql.Date的相关文章

java.sql.SQLException:value;&#39;0000-00-00&#39;can not be represented as java.sql.date

问题描述: 数据表中有记录的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.sql.Date 将其视为

mssql-异常value &#39;0000-00-00&#39; can not be represented as java.sql.Date

Mysql开发中采用ResultSet取值時,不管是才用getString()还是用getDate(),或者getObject,均会拋出如题所述异常.查阅Mysql官方Bug咨询: 是因为日期型(Date或DateTime类型)字串为'000-00-00'时,MySQL预设处理方式是拋出异常(exception).只要将jdbc数据库连接字串作如下修改即可: 修改前jdbc连接字符串为: jdbc:mysql://localhost:3306/test?characterEncoding=UTF

MySQL 关于 Value &#39;0000-00-00 00:00:00&#39; can not be represented as java.sql.Timestam

处理Sql查询遇到这样一个问题(数据库是MySQL),有个字段定义类型是datetime,且非空无默认值, 通过PHPMyAdmin界面填充测试数据的时候没有理会这个字段,看到个小警告,插入成功, 但是在取数据的时候出现这样一个错误: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp JAVA连接MySQL数据库,在操作值为0的timestamp类型时不能正确的处理,而是默认抛出一个异常,就是所见的:

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:00:00' can not be represented as java.sql.Timestamp. 解决办法如下: 给数据库的jdbc.url加上zeroDateTimeBehavior参数,如下: jdbc.url=

解决提示Value &#39;0000-00-00 00:00:00&#39; can not be represented as java.sql.Timestamp;的方法

Mysql在进行查询时报了一个 Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp; 这样的错误,这是因为在默认插入一个类型为timestamp的时间时它会将'0000-00-00 00:00:00'插入,但是在数据库定义时又因为设计是非空的timestamp类型的时间,所以查询时就会出错,并且mysql的时间范围是:'1000-01-01 00:00:00' 到 '9999-12-31 23:59:5

Caused by: java.sql.SQLException: Value &#39;0000-00-00 00:00:00&#39; can not be represented as java.sql.Timestamp

错误信息如下: Caused by: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp 原因如下:是因为数据表中字段类型与对象中的属性类型不一致.比如在我的数据表中是datetime类型,正常来说,对象中应该是Date类型,但是本次在对象中却是String类型. 解决办法:(1)将datetime类型修改为varchar类型,即可解决问题;(2)将Java

“java.sql.SQLException: Value &#39;0000-00-00&#39; can not be represented as java.sql.Timestamp”

最近在项目中使用hibernate查询时,总报错“java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp”,但是直接在Navicat Premium中运行sql可以正常得到值,无任何错误,后来仔细分析下日志信息,发现返回的数据中含有字段值为0000-00-00 00:00:00,而在hibernate将结果映射成实体时,会认为此种格式不是正确的java.sql.Timestamp

Mysql 时间格式默认空串 &#39;0000-00-00 00:00:00&#39; select抛出异常的解决方法

Mysql 时间格式默认插入值为空时,会以'0000-00-00 00:00:00'填充,这时如果select时会抛出SQLExecption如下: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp 解决方法如下: 方法一:jdbc的url加zeroDateTimeBehavior参数: datasource.url=jdbc:mysql://localh

java程序读取时分秒为00:00:00

今儿个碰到一问题 搞了半天 数据库中datetime 时间为2014-12-13 12:20:01 java程序中读取却未能到2014-12-13 00:00:00 纳闷了 bean 定义类型为java.util.Date mybatis中配置 用户配置文件自动生成的 <result column="last_online_time" property="lastOnlineTime" jdbcType="DATE" /> 将如上配置