mssql-异常value '0000-00-00' 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-8&characterSetResults=UTF-8

修改後jdbc连接字符串为 :

 jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull

原文如下:

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.

mssql-异常value '0000-00-00' can not be represented as java.sql.Date

时间: 2024-12-30 00:14:18

mssql-异常value '0000-00-00' can not be represented as java.sql.Date的相关文章

MySQL 关于 Value '0000-00-00 00:00:00' 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 '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; 这样的错误,这是因为在默认插入一个类型为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 '0000-00-00 00:00:00' 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

Mysql 时间格式默认空串 '0000-00-00 00:00:00' 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" /> 将如上配置

日期赋值为: 0000:00:00

datetime dt setnull(dt) dwo.object.date[1]=dt日期赋值为: 0000:00:00,布布扣,bubuko.com

最著名的压力容器设计软件 INTERGRAPH.PVELITE.2016.V18.00.00.0000

最著名的压力容器设计软件 INTERGRAPH.PVELITE.2016.V18.00.00.0000PVelite利用了熟悉的Windows界面,设计了快速便捷的安装程序和易操作的对话框,另外,PVelite的用户自定义功能还允许用户按照自己的工作需要组织自己的可视信息. PVElite很容易建立容器模型.用户通过点击设备主体元件,就可以拼接建立各种完整的设备模型.用户在设备元件上可以加入详细的附属元件,如接管,加强圈,梯子平台,支撑件(鞍座.耳座.支腿)……等.模型显示有3D和2D区域表达各

[ 6.299069] [drm] nouveau 0000:01:00.0: 0x94F6: Init table command not found: 0xA9

问题背景: 安装Debian 7.8 到台式机上.安装过程结束后无法开机,屏幕上显示内容: [  6.299069] [drm] nouveau 0000:01:00.0: 0x94F6: Init table command not found: 0xA9 [  6.301620] [drm] nouveau 0000:01:00.0: Register 0x00680500 not found in PLL limits table [  6.302773] [drm] nouveau 00

(转)SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间

原因: 出现这种问题多半是因为你插入或者更新数据库时,datetime字段值为空默认插入0001年01月01日造成datetime类型溢出. 传给数据库表的时间类型值是null值.这里的null指的是程序代码中的null,多数出现这种情况的场景是:在程序里面定义了一个时间类型的变量,没有给赋值,就传给数据库,这时这个变量的值默认是赋成了01年01月01日;由于数据库中DateTime类型字段,最小值是1/1/1753 12:00:00,而.NET Framework中,DateTime类型,最小