mysql中时间字段设置遇到的问题

 更新时间:2023年07月24日 09:26:20   作者:azhegps  
这篇文章主要介绍了mysql中时间字段设置遇到的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mysql中时间字段设置问题

案例【一】

今天写数据库脚本,创建数据库时,有一个字段是datetime类型的,想要设置默认时间为当前时间,

于是有了如下代码:

registerDate datetime NOT NULL DEFAULT NOW() COMMENT '注册时间'

执行之后报错

 Error Code: 1067. Invalid default value for 'registerDate'

PS:在mysql 5.6中,这种写法OK,之前的版本不支持这样的写法。

案例【二】

mysql一般在设置时间的时候也常用时间戳。timestamp类型

在执行mysql数据库时报错

CREATE TABLE `advert_schedule_time` (
  `advert_id` int(11) NOT NULL DEFAULT '0' COMMENT '广告id',
  `stime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '开始时间',
  `etime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '结束时间',
  `times` int(11) NOT NULL DEFAULT '0' COMMENT '投放次数',
  UNIQUE KEY `adverttime` (`advert_id`,`stime`,`etime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '广告时间排期表';

首先用下面的命令看下sql_mode

show variables like 'sql_mode';

如果查询的结果如下:

ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION

如果结果中含有NO_ZERO_IN_DATE, NO_ZERO_DATE

则执行下面的命令:

set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

mysql时间类型字段自动更新设置

alter table user modify column update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间';
alter table 表名 modify column 字段名 类型 NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘注释';

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Mysql中强制索引的具体使用

    Mysql中强制索引的具体使用

    Mysql强制索引可以通过强制使用某些列的索引来提高查询的性能,本文就来介绍一下Mysql中强制索引的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • MySQL执行状态的查看与分析

    MySQL执行状态的查看与分析

    今天小编就为大家分享一篇关于MySQL执行状态的查看与分析,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • mysql常用备份命令和shell备份脚本分享

    mysql常用备份命令和shell备份脚本分享

    这篇文章主要介绍了mysql常用备份命令和shell备份脚本,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-09-09
  • MySQL连表查询的实现

    MySQL连表查询的实现

    在Mysql数据库中,表的连接操作是非常重要的,能够将不同的表结合在一起,实现更加丰富和复杂的查询操作,本文主要介绍了MySQL连表查询的实现,感兴趣的可以了解一下
    2023-06-06
  • mysql 5.7.20\5.7.21 免安装版安装配置教程

    mysql 5.7.20\5.7.21 免安装版安装配置教程

    这篇文章主要为大家详细介绍了mysql5.7.20和mysql5.7.21免安装版安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • MySQL 移动数据目录后启动失败问题解决

    MySQL 移动数据目录后启动失败问题解决

    由于安装数据库时将MySQL的数据目录放在了根目录下,现在存储空间不足,遇到这个问题如何解决呢,下面小编给大家带来了mysql移动数据目录启动失败解决方法,感兴趣的朋友一起看看吧
    2023-04-04
  • MySQL重启之后无法写入数据的问题排查及解决

    MySQL重启之后无法写入数据的问题排查及解决

    客户在给系统打补丁之后需要重启服务器,数据库在重启之后,read_only 的设置与标准配置 文件中不一致,导致主库在启动之后无法按照预期写入,所以本文给大家介绍了MySQL重启之后无法写入数据的问题排查及解决,需要的朋友可以参考下
    2024-05-05
  • MySQL 回表,覆盖索引,索引下推

    MySQL 回表,覆盖索引,索引下推

    这篇文章主要介绍了MySQL 回表,覆盖索引,索引下推,就是我们需要查询的数据都在二级索引树中,直接返回这种情况就叫做覆盖索引
    2022-07-07
  • MySQL千万不要这样写update语句

    MySQL千万不要这样写update语句

    MySQL中update语句用于更新表中的现有数据,亦可用UPDATE语句来更改表中单个行,一组行或所有行的列值,这篇文章主要给大家介绍了关于MySQL千万不要这样写update语句的相关资料,需要的朋友可以参考下
    2021-11-11
  • mysql 超大数据/表管理技巧

    mysql 超大数据/表管理技巧

    在实际应用中经过存储、优化可以做到在超过9千万数据中的查询响应速度控制在1到20毫秒。看上去是个不错的成绩,不过优化这条路没有终点,当我们的系统有超过几百人、上千人同时使用时,仍然会显的力不从心
    2013-03-03

最新评论