Home  >  Article  >  Database  >  MySQL查询默认时间抛出异常

MySQL查询默认时间抛出异常

WBOY
WBOYOriginal
2016-06-07 16:08:181556browse

创建了一个MySQL表,表中有一个字段是Date类型的,默认值时0000-00-00 00:00:00,查询的时候使用的是PrepareStatement,查询结果为

问题现象

创建了一个MySQL表,,表中有一个字段是Date类型的,默认值时0000-00-00 00:00:00,查询的时候使用的是PrepareStatement,查询结果为ResultSet,从结果中取出Date字段使用的是ResultSet.getDate("XXXX"), 结果会抛出异常:java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date.

问题原因

MySQL中Date的默认值是"0000-00-00 00:00:00",但是java.sql.Date却认为这是一个不合法的值,所以会抛出上述异常。

解决方案

在MySQL的连接的URL中增加一个参数zeroDateTimeBehavior,这个参数可以指定遇到这样的默认值时将这个值转换为什么值。 有两种方案,一种是转换为"0001-01-01 00:00:00", 另一种方案则直接转换为Null. 依次对应的具体配置如下:

String url = "jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=round";  // 转换为 "0001-01-01 00:00:00"

String url = "jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull";  // 转换为Null

本文永久更新链接地址:

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn