java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP. 2018-09-15 21:29:44

报错信息一、

java java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 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'。

解决方案:

在java中,从mysql数据库拿timestamp类型的数据,如果数据为'0000-00-00 00:00:00‘,那用ResultSet.getTimestamp()拿数据的时候就会报该错误信息,此时只需要在数据库的url的末尾加上

?relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull就可以,如:

String url = jdbc:mysql\://localhost\:3306/smbms ?relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull

tip:这个小问题搞了我整整一天,MMP

报错信息二、

java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

异常是时区的错误,因此只你需要设置为你当前系统时区即可

解决方案:

在数据库的url的末尾加上   ?serverTimezone=GMT%2B8

如果多个条件的话,问好要改成"&"

String url = jdbc:mysql\://localhost\:3306/smbms

?relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8
现象:My SQL 5.7版本之后,date, datetime类型设置默认值” 0000 - 00 - 00 ″,出现异常:Invalid default value for ‘time’ 原因:在命令行窗口查看当前的 sql _mode配置: select @@ sql _mode; 结果如下: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,  ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION  其中NO_Z 但是在客户端不可以,服务启动时报错: java . sql . SQLException : null,  message from server: “Host ‘223.72.41.7’ is not allowed to connect to this My SQL server” 客户端访问时报错: 解决方法: 1,登陆服务器 my sql > use my sql ; //用my sql database 2,查询user表如下: 3,my sql > update user set host=’%’ where u 问题描述:数据表中有记录的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 在My sql 数据库 中使用DATETIME类型来存储时间,使用JDBC中读取这个字段的时候,应该使用 ResultSet.get Timestamp (),这样会得到一个 java . sql . Timestamp 类... 出现这个错误的原因是:当 数据库 中的Date类型字段值是 ‘ 0000 - 00 - 00 ’时,JDBC不能把’ 0000 - 00 - 00 ’转化为一个 java . sql .Date 问题的解决方案是在连接 数据库 的url后加入?zeroDateTimeBehavior= convert ToNull url = jdbc:my sql ://localhost:3306/library?zeroDateTimeBeh... 在 Java 中,从My SQL 数据库 timestamp 类型的数据,如果数据为’ 0000 - 00 - 00 00 : 00 : 00 ‘,那 用ResultSet.get Timestamp ()拿数据的时候就会报该错误信息,此时只需要在 数据库 的url的末尾加上?relaxAutoCommit=true&zeroDateTimeBehavior= convert ToNull就可以,如: String url = “jdb Error attempting to get column 'XXXXXXX' from result set. Cause: java . sql . SQL DataException: Cannot convert string 'XXXXXXX' to java . sql . Timestamp value ; Cannot convert string 'XXXXXX @EqualsAndHashCode(callSuper = true) @TableName("erlang_user_car") @ApiModel( value ="UserCar对象", description="车") public class UserCar extends BaseExample implements Serializable{ private static final long serialVersionUID = 1L; @ApiModelP. 异常: java . sql . SQLException : Cannot convert value 0000 - 00 - 00 00 : 00 : 00 ’ from column aa to TIMESTAMP 解决办法: 将my sql 数据连接url上加上 zeroDateTimeBehavior= convert ToNull; jdbc:my sql ://localhost:3306/dataNam... 今天写一个代码。从数据获得时间,通过map获得,发现报错。 这个错误的意思是:字段类型不一样,本来应该使兼类型的,你用来转String或者String类型的,你转时间类型。 解决办法: 直接写成:String date=map.get("字段").toString(); Caused by: java . sql . SQLException : Cannot convert value '1' from column 1 to TIMESTAMP . at com.my sql .jdbc. SQL Error.create SQLException ( SQL Error. java :1055) at com.my sql .jdbc. SQL Error.create SQLException ( SQL Error. java :956) at com.my sql .jdbc. SQL Error.createSQ