`

mysql 5.6 中 timestamp的变化

 
阅读更多


在mysql 5.5中
第一个未设置默认值的TIMESTAMP NOT NULL字段隐式默认值:
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
后面未设置默认值的TIMESTAMP NOT NULL字段隐式默认值:
0000-00-00 00:00:00
TIMESTAMP NOT NULL字段插入NULL时,会使用隐式默认值:
CURRENT_TIMESTAMP
不支持多个CURRENT_TIMESTAMP 默认值


针对下面的例子


从MySQL5.6.6开始这种默认设置的方法被废弃了。在MySQL启动时会出现以下警告:


[Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
Please use --explicit_defaults_for_timestamp server option
(seedocumentation for more details).
关闭警告,在my.cnf中加入


[mysqld]
explicit_defaults_for_timestamp=true
重启MySQL后错误消失,这时TIMESTAMP的行为如下:

TIMESTAMP如果没有显示声明NOT NULL,是允许NULL值的,可以直接设置改列为NULL,而没有默认填充行为。
TIMESTAMP不会默认分配DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP属性。




声明为NOT NULL且没有默认子句的TIMESTAMP列是没有默认值的。往数据表中插入列,又没有给TIMESTAMP列赋值时,如果是严格SQL模式,会抛出一个错误,如果严格SQL模式没有启用,该列会赋值为’0000-00-00 00:00:00′,同时出现一个警告。(这和MySQL处理其他时间类型数据一样,如DATETIME
分享到:
评论

相关推荐

    MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数

    在MySQL 5.6中,`TIMESTAMP`数据类型和`explicit_defaults_for_timestamp`参数是数据库管理和时间戳处理的关键元素。`TIMESTAMP`通常用于记录数据记录的创建或修改时间,而`explicit_defaults_for_timestamp`参数则...

    MySQL 5.6 中 TIMESTAMP 的变化分析

    总之,MySQL 5.6中TIMESTAMP的行为变化是向更清晰的默认规则和更好的SQL兼容性迈出的一步。开发者应理解这些变化,并在设计数据库时考虑是否启用`explicit_defaults_for_timestamp`,以确保代码的健壮性和可维护性。

    MySQL 5.6 中 TIMESTAMP有那些变化

    以下是 MySQL 5.6 中 TIMESTAMP 的关键变化: 在 MySQL 5.6.6 之前,TIMESTAMP 的默认行为如下: 1. 如果没有明确声明为 NULL,TIMESTAMP 列默认为 NOT NULL。 2. 将 TIMESTAMP 列的值设置为 NULL 会自动存储为当前...

    MySQL 5.6 中TIMESTAMP with implicit DEFAULT value is deprecated错误

    在MySQL 5.6版本中,当你安装或升级数据库系统时,可能会遇到一个警告提示:“TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see ...

    SUSE 11 sp3 安装mysql 5.6

    - `TIMESTAMP with implicit DEFAULT value is deprecated`:这是 MySQL 5.6 中的一个警告信息,提醒用户 TIMESTAMP 类型的字段默认值使用隐式的方式已不再推荐。 - `Ignoring --secure-file-priv value as server ...

    mysql5.5,5.6,5.7 完美支持驱动jar

    总之,这个压缩包提供的驱动jar文件确保了与MySQL 5.5、5.6和5.7版本的兼容性,特别对于需要高精度`TIMESTAMP`字段的应用场景,它将提供稳定且高效的数据库连接服务。开发者可以安心将其集成到Java项目中,以实现与...

    ubuntu系统中安装mysql5.6(通过二进制)

    在Ubuntu系统中安装MySQL 5.6涉及到一系列步骤,这里我们将详细讲解如何通过二进制方式来完成安装。首先,我们需要下载MySQL的二进制包,然后创建必要的目录和用户,配置系统文件,安装依赖,初始化数据库,设置环境...

    mysql reference manual 5.6

    以上仅是《MySQL参考手册5.6》中部分内容的概述,实际手册中还包含更多关于视图、分区、分区表、XML支持、XML函数、正则表达式、JSON支持等的详细信息。通过深入学习和实践,你可以充分利用MySQL 5.6的强大功能,...

    linux mysql5.6版本的安装配置过程

    注意,这个过程中可能会出现关于TIMESTAMP默认值的警告,这是由于MySQL 5.6对TIMESTAMP类型的默认设置更改,可以在启动时添加参数来解决。 创建MySQL的系统服务,并设置开机启动: ```bash cp support-files/my-...

    Redhat linux 6安装Mysql 5.6二进制包.docx

    ### Redhat Linux 6 安装 MySQL 5.6 二进制包 #### 一、系统预检与准备 **1. 创建 MySQL 用户及组** - 首先,确保系统上存在一个用于运行 MySQL 服务的专用用户和组。这有助于提升系统的安全性并遵循最佳实践。 ...

    MySQL 5.1中文参考手册(CHM).zip

    3. **数据类型**:MySQL支持多种数据类型,如整数类型(INT、TINYINT等)、浮点数类型(FLOAT、DOUBLE)、字符串类型(CHAR、VARCHAR)、日期时间类型(DATE、TIME、TIMESTAMP、DATETIME)以及二进制类型(BLOB、...

    MySQL 5.6 & 5.7最优配置文件模板(my.ini)

    MySQL的配置文件(my.ini)是数据库性能调优的关键部分,对于MySQL 5.6和5.7这两个版本,优化配置尤为重要。配置文件模板提供了一种基础设置,可以根据服务器的具体情况进行微调,以达到最佳性能。以下是一些重要的...

    spirng-boot 的时间类型(date、datetime、timestamp)的全局配置

    两者的区别在于,DATETIME的范围更广(1000-01-01到9999-12-31),而TIMESTAMP在MySQL 5.6及之后版本支持的范围与DATETIME相同,但在旧版本中范围较小(1970-01-01到2038-01-19)。此外,TIMESTAMP在某些情况下会...

    解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别

    在MySQL 5.6版本中,TIMESTAMP数据类型的处理有所改变,例如默认值设置和隐式转换规则等,这些变化可能会影响到UNIX_TIMESTAMP()的使用。在选择使用哪种时间处理函数时,开发者应考虑应用程序的具体需求,包括性能、...

    MySQL中文参考手册.chm

    1.2 关于本手册 1.2.1 本手册中使用的约定 1.3 MySQL的历史 1.4 MySQL的主要特征 1.5 MySQL稳定性? 1.6 顺应2000年 1.7 SQL一般信息和教程 1.8 有用的MySQL相关链接 ...

Global site tag (gtag.js) - Google Analytics