Cannot convert value '0000-00-00 00:00:00' from column to TIMESTAMP

在Mysql数据库中使用DATETIME类型来存储时间,使用JDBC中读取这个字段的时候,应该使用 ResultSet.getTimestamp(),这样会得到一个java.sql.Timestamp类型的数据。在这里既不能使用 ResultSet.getDate(),也不能使用ResultSet.getTime(),因为前者不包括time数据,后者不包括date数据。

但是在使用ResultSet.getTimestamp()时也不是完全安全的,例如,当数据库中的TIMESTAMP类型的字段值为 '0000-00-00 00:00:00'时,使用此方法进行读取,会抛出异常:Cannot convert value '0000-00-00 00:00:00' from column 1 to TIMESTAMP,这是因为JDBC不能将'0000-00-00 00:00:00'转化为一个为一个java.sql.Timestamp,在Java中,想创建一个java.util.Date,使其值为 '0000-00-00'也是不可能的,最古老的日期应该是'0001-01-01 00:00:00'。

那么在程序中该怎么办捏? 解决方案在这里:

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.

所以,在JDBC URL中加入zeroDateTimeBehavior信息,既可以解决:
String url = "jdbc:mysql://10.149.51.80:3306/test?relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull";

当然,也可以使用另外一个策略:round。

 

thanks:http://hi.baidu.com/jjpro/blog/item/4dfc8900dae09581e950cd84.html

确诊了!是Druid1.1.20的锅,查询无法映射LocalDateTime类型(带源码解析及解决方案) (1)MyBatis3.5.5,Druid1.1.20查询时无法映射LocalDateTime类型,是Druid的问题,该版本的Druid方法getObject直接抛出异常,导致映射失败; (2)MyBatis3.5.5已经具备处理LocalDateTime数据类型的能力,通过getNullableResult即可处理; (3)解决无法映射LocalDateTime问题常用的方案:提高Druid版本为1.1.21;使用String替换LocalDateTime。......... 阅读详情

相关推荐

3D Slicer中安装MedSAM插件

大家应该都读过这篇论文:《Segment Anything in Medical Images》这个插件便是该论文团队推出的在3D Slicer上使用的插件,可以分割医学图像的任何感兴趣区域。

m0_73719342的博客 2329

MySQL的JDBC的zeroDateTimeBehavior=convertToNull配置

在查询 Mysql 数据库的时候,有时候会产生一个异常:Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp. Stacktrace follows:java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as ja...

IT老兵的驿站 1万+

zeroDateTimeBehavior=convertToNull

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

chuncui2576的博客 658

Python实战:用NumPy实现LU分解与QR分解(附代码对比)

本文深入探讨了使用NumPy实现LU分解与QR分解的实战方法,通过代码对比分析了两种矩阵分解技术的原理、数值稳定性差异及核心应用场景。LU分解适用于高效求解线性方程组,而QR分解凭借其正交化特性,在求解最小二乘问题和处理病态矩阵时更具优势。文章提供了详细的Python代码示例,帮助开发者根据具体问题选择最合适的分解方法。

php55的博客 1212

【学一点英飞凌】AutoSar-MCAL-Gtm-TOM模块

本文基于英飞凌TC3X7芯片手册,GTM的TOM模块是产生并输出PWM的地方,想要彻底了解PWM,就必须知道它是怎么产生和如何被输出的。TOM通道还没有介绍的,详见下一篇;

qq_44688936的博客 6030

mysql配置zerodatetimebehavior=converttonull什么意思

JAVA连接MySQL数据库,在操作各项值均为为0(或者有0不正确的数据??)的timestamp等(日期为0000-00-00。。。。)类型时不能正确处理,而是默认抛出一个异常,比如所见的:java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column XX to TIMESTAMP。 举个实际的栗

sinat_30397435的博客 3万+

PX4环境git submodule update --init --recursive失败的解决办法

最近开始搭建PX4环境,搭建是需要从github下载工程,然后使用语句git submodule update --init --recursive更新工程子模块,但往往由于网络原因这一步需要很久,甚至会失败。因为github是外网,在上面下载代码会受到很大限制,往往会出现下面的问题: 即无法连接到github,查阅了相关资料后,我发现了解决更新子模块失败的方法: 1.打开你下载的PX4源码,即Firmware文件夹,找到其中的.gitmodules,如下图: 2…gitmodules有以上格式,path

qq_36903625的博客 1万+

Cannot convert value '0000-00-00 00:00:00' from column XX to TIMESTAMP

1.问题 程序使用select 语句从中取数据时出现以下异常: java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 9 to TIMESTAMP. at com.mysql.jdbc.ResultSet.getTimestampFromBytes(ResultSet.java:6864)...

Architect_优快云的博客 1699

从婴儿学步到工业级应用:VLA的‘隐式标定‘原理通俗图解

本文深入解析VLA(Vision-Language-Action)模型的'隐式标定'原理,通过类比婴儿学习机制,揭示其如何替代传统手眼标定技术。文章对比了工业机器人传统标定与VLA数据驱动方法的差异,并可视化神经网络注意力机制,展示其在空间关系编码上的突破性进展。最后探讨了VLA在工业应用中的优势与混合架构解决方案。

pz890123456的博客 323

IsaacSim环境配置之配置本地资产包

摘要:Isaac Sim官方资产文件默认从美国服务器下载速度慢,影响开发体验。建议下载本地资产包并配置本地资源源。具体步骤包括:1) 下载资产包并解压;2) 修改Isaac Sim安装路径下的配置文件,添加本地资产路径配置,包括机器人、人物、环境等各类资源目录。配置完成后可显著提升资产加载速度,改善开发效率。文中提供了详细的配置文件修改示例和截图说明。

拥抱具身智能,昇腾Ascend C 328

jmeter JDBC request提示“Cannot convert value '0000-00-00 00:00:00' from column 6 to TIMESTAMP.”

在学习jmeter数据库相关的过程中,在请求数据库时报错“Cannot convert value '0000-00-00 00:00:00' from column 6 to TIMESTAMP.”解决方法:更改连接数据库方式在连接:jdbc:mysql://127.0.0.1:3306/test 后面加上一个参数zeroDateTimeBehavior=convertToNull即更改为:jd...

qq_41714308的博客 850

【基于 CasADi 的欠驱动无人船实时非线性模型预测控制(NMPC)实现与避碰仿真】MATLAB开源复现

本文提出了一种基于CasADi的欠驱动无人船实时非线性模型预测控制(NMPC)方法,实现了轨迹跟踪与避碰功能。研究采用三自由度USV动力学模型,集成静态与动态障碍物避碰约束,并满足国际海上避碰规则(COLREGS)。通过CasADi+IPOPT数值优化求解,实现了毫秒级实时控制。文章详细介绍了USV建模、NMPC控制器设计、避碰约束建模以及CasADi实现流程,包括核心求解流程和轨迹生成方法。实验结果表明,该方法能有效实现复杂环境下的轨迹跟踪与避碰功能。

vor234的博客 1394

这个问题的解决:Cannot convert value '0000-00-00 00:00:00' from column 1 to TIMESTAMP

** 测试的时候碰到了这个问题,检查自己的配置,mapper.xml和config.xml 都没有出错,那么 问题出在了哪里呢? ** 直接浏览器中搜索:Cannot convert value ‘0000-00-00 00:00:00’ from column 1 to TIMESTAMP 找到了一片很久前的文章原文章在这里 https://blog.csdn.net/woshisap/arti...

wenquan19960602的博客 693

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Cannot convert value '0000-00-00 00:00:00' from column 22 to TIMESTAMP

更改连接数据库方式 在连接:jdbc:mysql://127.0.0.1:3306/test 后面加上一个参数zeroDateTimeBehavior=convertToNull 即更改为: jdbc:mysql://127.0.0.1:3306/test?zeroDateTimeBehavior=convertToNull 按照正常的做法,比如日期值为2016

nu11_的博客 1407

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

开发 - Cannot convert value '0000-00-00 00:00:00' from column 38 to TIMESTAMP.

### Error querying database.  Cause: java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 38 to TIMESTAMP. ### The error may involve defaultParameterMap ### The error occurr

Ocean 584

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Cannot convert value '0000-00-00 00:00:00' from column 1 to TIMESTAMP

在Mysql数据库中使用DATETIME类型来存储时间,使用JDBC中读取这个字段的时候,应该使用 ResultSet.getTimestamp(),这样会得到一个java.sql.Timestamp类型的数据。在这里既不能使用 ResultSet.getDate(),也不能使用ResultSet.getTime(),因为前者不包括time数据,后者不包括date数据。但是在使用ResultSet

张波的技术积累 2万+

Hibernate Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP

问题显示: 17:24:09.062 ERROR org.hibernate.util.JDBCExceptionReporter - Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP.   原因:在mysql数据库中,如果Date类型的字段为空或者值为'0000-00-00"时,用Hibernate的

Truong的专栏 3204

mysql错误: Cannot convert value '0000-00-00 00:00:00' from column 10 to TIMESTAMP

<br />问题:MySQL数据库,如果数据库中日期字段为空为值为'0000-00-00 00:00:00"时,查询的时候回报:Cannot convert value '0000-00-00 00:00:00' from column 10 to TIMESTAMP<br /> <br />解决办法:<br />更改连接数据库方式<br />在连接:jdbc:mysql://127.0.0.1:3306/test 后面加上一个参数zeroDateTimeBehavior=convertToNull<br

stail111的专栏 1万+

Cannot convert value '0000-00-00 00:00:00' from column 19 to TIMESTAMP.

### Error querying database.  Cause: java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 19 to TIMESTAMP. ### The error may involve com.dajie.core.user.dao.UserDao.getByUid-...

182
上一篇: native2ascii的简单应用
下一篇: basketball
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值