时间戳字段在MySQL各版本的使用差异

    1、在MySQL 5.5及之前版本中,仅能对一个时间戳字段定义DEFUALT CURRENT_TIMESTAMP或ON UPDATE CURRENT_TIMESTAMP,但在MySQL 5.6和MySQL 5.7版本中取消了该限制;

    2、在MySQL 5.6版本中参数explicit_defaults_for_timestamp默认值为1,在MySQL 5.7版本中参数explicit_defaults_for_timestamp默认值为0;

    3、在MySQL 5.5和MySQL 5.7版本中timestamp类型默认为NOT NULL,在在MySQL 5.6版本中timestamp类型默认为NULL;

    4、当建表语句中定于c1 timestamp 时,

    1. MySQL 5.5中等价于`c1` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
    2. MySQL 5.6中等价于`c1` timestamp NULL DEFAULT NULL;
    3. MySQL 5.7中等价于`c1` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

    5、当建表语句中c1 timestamp default 0时,

    1. MySQL 5.5中等价于`c1` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00';
    2. MySQL 5.6中等价于`c1` timestamp NULL DEFAULT '0000-00-00 00:00:00';
    3. MySQL 5.7中等价于`c1` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00';

    PS1: MySQL 5.6版本和MySQL 5.7版本中主要差异受参数explicit_defaults_for_timestamp的默认值影响。

    PS2:当时间戳列的默认值为’0000-00-00 00:00:00’时,使用“不在时间戳取值范围内”的该默认值并不会产生警告。
    ————————————————
    版权声明:本文为CSDN博主「MYSQL轻松学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/liang_0609/article/details/99649332