问题描述:
数据表中有记录的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:00”在mysql中是作为一个特殊值存在的
但 java.sql.Date 将其视为 不合法的值 格式不正确
解决办法:
给jdbc url加上 zeroDateTimeBehavior参数:
datasource.url=jdbc:mysql://localhost:3306/pe?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNull
zeroDateTimeBehavior=round是为了指定MySql中的DateTime字段默认值查询时的处理方式;默认是抛出异常,
对于值为0000-00-00 00:00:00(默认值)的纪录,如下两种配置,会返回不同的结果:
zeroDateTimeBehavior=round 0001-01-01 00:00:00.0
zeroDateTimeBehavior=convertToNull null
分享到:
相关推荐
MySQL数据库在5.7版本之后,对于`date`和`datetime`类型的字段,设置默认值为"0000-00-00"时会出现错误提示“Invalid default value for 'time'”。这个问题源于MySQL的`sql_mode`配置,特别是其中的`NO_ZERO_IN_...
在MySQL中,设置datetime类型字段的默认值为当前时间有多种方法,但需要注意不同版本的MySQL可能有不同的限制和语法。 首先,当我们使用SQL语句创建表时,可以直接在字段定义中设置默认值为`CURRENT_TIMESTAMP`,...
在MySQL 5.7.9及更早版本,默认的`sql-mode`设置包括`NO_ZERO_DATE`和`NO_ZERO_IN_DATE`,这些模式不允许日期或日期时间字段中出现“0000-00-00”这样的无效值。同样,`STRICT_ALL_TABLES`或`STRICT_TRANS_TABLES`...
1. **MySQL数据库中的日期值为零或空**:MySQL允许存储零日期(如'0000-00-00'或'0000-00-00 00:00:00')以及空值。而在.NET中,`System.DateTime`不允许这些值。 2. **数据格式不匹配**:MySQL中的日期时间格式可能...
本文将详细介绍如何使用Python 3将datetime对象插入到MySQL数据库中的datetime字段,并解决可能遇到的问题。 首先,我们需要了解Python的datetime模块。datetime模块提供了datetime类,可以用来创建表示日期和时间...
以上三种方法都能够有效地解决MySQL datetime类型数据在Java应用中出现'.0'的问题。选择哪种方法取决于你的实际需求,例如,如果你希望在服务器端处理,可以使用JSTL的`fmt:formatDate`或`fn:substring`;如果希望在...
这个错误信息 "Incorrect datetime value: '' for column 'createtime'" 指出,你试图向名为 'createtime' 的日期时间类型列插入一个空字符串 '',而MySQL无法接受这种格式的空值。在MySQL 5.x及以上版本,特别是当...
在MySQL数据库管理中,修改字段类型是常见的操作,这可能是为了优化数据存储,提高查询效率,或者满足新的业务需求。以下是对"mysql修改字段类型"这一主题的详细说明。 首先,我们来看一下基本的语法结构。`ALTER ...
当你尝试将一个在MySQL 5.7中创建的数据库导出为SQL文件,并试图在MySQL 5.5环境中执行这个SQL文件时,系统可能会报出错误,指出无法识别“datetime(0)”或“timestamp(0)”的语法。这是因为MySQL 5.7引入了新的数据...
### DataX 数据从 Hive 导入 MySQL 数据缺失解决 #### 背景介绍 在大数据处理领域,Hive 和 MySQL 分别作为数据仓库与关系型数据库的重要组成部分,在数据流转过程中承担着关键角色。Hive 通常用于存储海量数据并...
在MySQL和Oracle这两个广泛使用的数据库管理系统中,我们经常遇到需要将字符串(varchar)类型的日期转换为日期(date)类型的情况。这通常是因为原始数据以字符串格式存储,而我们需要对这些日期进行比较、排序或...
MySQL数据库系统支持多种类型的字段,这些字段类型主要分为三大类别:数字类型、日期和时间类型以及字符串(字符)类型。了解这些类型对于有效地设计数据库表结构至关重要,因为它们决定了数据的存储方式、占用的...
创建一个名为 `db1` 的数据库,并在该数据库下创建一张名为 `stu` 的学生表,包含以下字段:学号(`id`)、姓名(`name`)、性别(`gender`)、生日(`birthday`)、身高(`height`)。 ```sql CREATE DATABASE db1; USE db1;...
3. 如果尝试插入超出时间范围的值,例如'1970-01-01 00:00:01',虽然写入时不会报错,但实际存储的值会是'0000-00-00 00:00:00',并且会产生一个警告。 `TIMESTAMP`类型的另一个特性是它可以自动更新,比如在记录...
### MySQL数据库基本操作语法知识点详解 #### 一、常用查询操作 **1. 显示所有数据库** - **命令**: `SHOW DATABASES;` - **功能**: 列出当前MySQL服务器上存在的所有数据库。 **2. 删除数据库** - **命令**: ...
3. **丰富的数据类型**:支持多种数据类型,如SIGNED/UNSIGNED整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、SET、ENUM等,满足不同应用场景的需求。 4. **ANSI SQL与...
这些模式在5.7版本中默认开启,不允许日期和时间字段有零值(如'0000-00-00')。当你尝试创建包含这样的默认值的表时,比如: ```sql `MODIFY_DATETIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON ...
如果不设置默认值,尝试插入没有指定该字段值的记录时,系统会报错。 - **唯一性约束(UNIQUE)**: 唯一性约束保证字段的值在整个表中是唯一的,可以用于创建索引来提高查询效率。 在实际操作中,我们可以使用...
` 命令查看指定表的字段、字段类型、是否可以为 NULL 以及默认值等信息。 - 使用 `SHOW CREATE TABLE 表名;` 命令查看建表语句 SQL。 ##### 3. 修改操作 - **修改字段数据类型**:使用 `ALTER TABLE 表名 MODIFY ...