MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数

yizhihongxing

MySQL是一种关系型数据库管理系统,其中TIMESTAMP是一种常用的时间类型。在MySQL 5.6版本中,TIMESTAMP类型的行为有一些变化,并且引入了新的explicit_defaults_for_timestamp参数来控制TIMESTAMP的默认值。下文将详细讲解这一过程。

理解TIMESTAMP类型

在MySQL中,TIMESTAMP是一种时间类型,可以使用标准日期、时间格式插入数据。它占用4个字节,并且存储时区无关。

TIMESTAMP类型在MySQL 5.6版本中有一些改变。在之前的版本中,TIMESTAMP类型默认情况下会使用当前时间作为默认值。但是,在MySQL 5.6版本中,TIMESTAMP类型的默认行为变成了使用0作为默认值。

举例来说,以下的SQL语句在MySQL 5.6以下版本中会将time字段设置为当前时间,但是在MySQL 5.6版本中,time字段会被设置为0:

CREATE TABLE example (
    id INT(11) NOT NULL AUTO_INCREMENT,
    time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);

使用 explicit_defaults_for_timestamp 参数

为了控制MySQL中TIMESTAMP类型的默认行为,MySQL 5.6版本引入了新的explicit_defaults_for_timestamp参数。该参数默认情况下被设置为OFF,即使用0作为默认值。

以下是如何将explicit_defaults_for_timestamp参数设置为ON的示例:

mysql> SET @@explicit_defaults_for_timestamp = ON;
Query OK, 0 rows affected (0.00 sec)

现在,如果我们创建一个新表并向其中插入数据,时间字段将会显示当前时间而不是0。以下是如何使用explicit_defaults_for_timestamp参数创建一个表的示例:

CREATE TABLE example (
    id INT(11) NOT NULL AUTO_INCREMENT,
    time TIMESTAMP NOT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
  ROW_FORMAT=DYNAMIC
  @@explicit_defaults_for_timestamp = ON;

注意,我们需要在CREATE TABLE语句的结尾添加 @@explicit_defaults_for_timestamp = ON; 部分,以明确指定该表需要使用该参数。

总结

在MySQL 5.6版本中,TIMESTAMP类型的默认行为发生了变化,它现在使用0作为默认值。要修改该行为,可以使用新的explicit_defaults_for_timestamp参数来控制。此外,我们还演示了如何在表创建时启用该参数的方法。该参数的默认值为OFF,因此需要明确设置为ON才能生效。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • springboot集成测试里的redis

    下面是关于“Spring Boot集成测试里的Redis”的完整攻略。 1. 什么是Spring Boot集成测试? Spring Boot集成测试是指在应用程序上下文中启动完整的Spring Boot应用程序并测试其正确性,包括各个组件的正确性、依赖注入等执行过程。这是为了验证应用程序作为整体是否能够正常工作的一种测试类型。 2. Spring Boot集…

    database 2023年5月22日
    00
  • 从linux系统mysql导出数据库

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/50763674   1、MySQL数据库导出 /usr/local/mysql/bin/mysqldump -u root -p123456 test> /home/backup/test.sql 其中:root为数据库用户名 123456…

    MySQL 2023年4月13日
    00
  • 国内营销和国际营销的区别

    国内营销和国际营销的区别主要体现在目标市场、文化差异和营销策略等方面。 一、目标市场的不同 国内营销主要面向中国的消费者市场,而国际营销则需要面向全球不同的市场。在国内,消费者的消费习惯和文化传统都比较固定,因此企业采取的营销策略和市场定位也相对更容易。但在国际市场,消费者的消费习惯、文化背景、宗教信仰等差异非常大,企业需要根据不同的市场进行定位。 例如:华…

    database 2023年3月27日
    00
  • PouchDB 和 Cassandra 的区别

    PouchDB和Cassandra是两种不同类型的数据库系统,它们之间有很多区别。 什么是PouchDB和Cassandra? PouchDB是一个基于JavaScript的数据库系统,它是一个开源、跨平台的文档存储库。PouchDB可以在浏览器、移动端、桌面应用等多种环境中使用,并且可以与其他数据库系统(如CouchDB、MySQL等)进行同步。 Cass…

    database 2023年3月27日
    00
  • 全链路监控平台Pinpoint SkyWalking Zipkin选型对比

    本文将详细比较全链路监控平台 Pinpoint、SkyWalking 和 Zipkin 三个平台的选型差异和功能特点,帮助用户更好地选择合适的监控平台。 一、Pinpoint 1.1 功能特点 Pinpoint 是由韩国 Naver 公司开发的,支持 Java、Node.js、PHP、Python、Go 等多种语言的全链路监控平台。它可以精细化地监控一条完整…

    database 2023年5月21日
    00
  • Cassandra 和 MongoDB 的区别

    Cassandra和MongoDB是两种常见的NoSQL数据库。虽然它们都属于NoSQL范畴,但是它们之间还是有一些明显的区别的。 Cassandra Cassandra是一个高度可扩展的分布式数据库,它被设计用来处理大规模的数据。它是由Facebook开发的,目的是解决需要在分布式的服务器上存储和分析海量数据的问题。与传统的关系型数据库不同,Cassand…

    database 2023年3月27日
    00
  • SQL Server评估期已过问题的解决方法

    下面是“SQL Server评估期已过问题的解决方法”的完整攻略,具体过程如下: 问题背景 在使用SQL Server时,如果我们在安装完SQL Server之后,没有输入有效的许可证密钥,那么SQL Server将进入评估期。一旦过了评估期,SQL Server就会停止运行,也就是我们经常遇到的“SQL Server评估期已过”的问题。如果我们没有及时解决…

    database 2023年5月21日
    00
  • SQL – 别名

    SQL-别名的完整攻略 在SQL中,别名(Alias)是给一个表或一个列起一个别名,以便于提高查询语句的可读性。下面介绍SQL别名的具体用法及实例。 用法 SQL别名的使用方法为,使用AS关键字来为表或列起一个别名。语法如下: SELECT column_name AS alias_name FROM table_name; 实例 实例一 现有一张订单表,需…

    database 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部