MySQL关于Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
来源:互联网 发布:哪个cms好 编辑:程序博客网 时间:2024/05/01 09:26
处理Sql查询遇到这样一个问题(数据库是MySQL),有个字段定义类型是datetime,且非空无默认值,
通过PHPMyAdmin界面填充测试数据的时候没有理会这个字段,看到个小警告,插入成功,
但是在取数据的时候出现这样一个错误:
Value '0000-00-00 00:00:00' can not be represented asjava.sql.Timestamp
因为数据库访问层是自己封装的架构,所以第一个想法是:“哇,遇到一个新情况”,
于是去看基类的反射处理部分,好像没啥问题,小小的失望了一下,
后来把整个错误扔到网上搜索了一下,嗬,还真不少,中文的英文的××文的都有,
捡个权威的吧(MySQL官方http://dev.mysql.com/doc/refman/5.1/en/connector-j-installing-upgrading.html):
Datetimes
Connector/J 3.1 throws an exception by default when thesevalues are encountered as this is the most correct behavioraccording to the JDBC and SQL standards. This behavior can bemodified using the
exception
convertToNull,which returns NULL instead of the date.
round,which rounds the date to the nearest closest value which is0001-01-01.
Starting with Connector/J 3.1.7, ResultSet.getString() can bedecoupled from this behavior via
两种解决办法(高亮颜色我加的),两种方法都是在数据库连接串处追加设置,
现举例说下两种情况的结果:
原连接串:driver-url=jdbc:mysql://127.0.0.1/test
使用参数zeroDateTimeBehavior:
取值exception:
driver-url=jdbc:mysql://127.0.0.1/test?zeroDateTimeBehavior=exception
结果:
java.sql.SQLException:Value '0000-00-00 00:00:00' can not be represented asjava.sql.Timestamp
取值convertToNull:
driver-url=jdbc:mysql://127.0.0.1/test?zeroDateTimeBehavior=convertToNull
结果:
ClientDto[id:1,email:test@hotmail.com,civilite:测试用户,prenom:贾,nom:某某,birthday:1992-03-18,telephone:12312345678,address:测试用户的住址,regionid:1,postcode:111000,city:大连,country:france,batiment:110#,escalier:2,code:151515,interphone:050505,etage:东侧走廊,appartment:205,createdate:2010-03-1609:30:21.0,status:0,totalprice:0.00,totalnum:0,lastdate:null,lasttotal:0.00,]
取值round:
driver-url=jdbc:mysql://127.0.0.1/test?zeroDateTimeBehavior=round
结果:
ClientDto[id:1,email:test@hotmail.com,civilite:测试用户,prenom:贾,nom:某某,birthday:1992-03-18,telephone:12312345678,address:测试用户的住址,regionid:1,postcode:111000,city:大连,country:france,batiment:110#,escalier:2,code:151515,interphone:050505,etage:东侧走廊,appartment:205,createdate:2010-03-1609:30:21.0,status:0,totalprice:0.00,totalnum:0,lastdate:0001-01-0100:00:00.0,lasttotal:0.00,]
另一参数noDatetimeStringSync:
driver-url=jdbc:mysql://127.0.0.1/test?noDatetimeStringSync=true
结果:
ClientDto[id:1,email:test@hotmail.com,civilite:测试用户,prenom:贾,nom:某某,birthday:1992-03-18,telephone:12312345678,address:测试用户的住址,regionid:1,postcode:111000,city:大连,country:france,batiment:110#,escalier:2,code:151515,interphone:050505,etage:东侧走廊,appartment:205,createdate:2010-03-1609:30:21,status:0,totalprice:0.00,totalnum:0,lastdate:0000-00-0000:00:00,lasttotal:0.00,]
个人感觉按通用性来说结果是Null可能好些,但是结果是一串零的更能贴近空时间的概念,所以具体选择看各自项目的需求选择使用吧。
- mysql Value '0000-00-00' can not be represented as java.sql.Timestamp
- mysql抛出Value '0000-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 的错误
- MySQL关于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
- MySQL关于Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
- Err:java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp
- [DEBUG] “java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp”
- java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp
- “java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp”
- java 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.Timestamp
- ERROR: 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.Timestamp;
- Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp
- Value '0000-00-00' can not be represented as java.sql.Timestamp
- Android Studio 问题记录-全部java文件全部报错,却可以运行
- SQL符合函数查询
- 两个Activity之间重复相互跳转时遇到的坑
- 递归神经网络RNN原理——Elman网络原理——结合实例MATLAB(BPTT算法)实现
- Leetcode-67. Add Binary
- MySQL关于Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
- HDU 1671 Phone List
- oracle 下载地址(备忘)
- 389.leetcode Find the Difference(easy)[字符串处理]
- [LeetCode]--172. Factorial Trailing Zeroes
- SQL聚合函数查询
- Clojure 学习入门(4)- 字符串
- 洛谷 P3094 [USACO13DEC]假期计划Vacation Planning
- 在eclipse里面创建maven工程