在使用MySQL中datetime格式自动更新特性时,我们应该明确一点,datetime格式设置默认值为当前时间和自动更新时间是从MySQL5.6版本之后开始支持的。此前我们都是使用timestamp格式来实现自动更新时间。

一、下面是datetime与timestamp两者的简单对比

格式 时间范围 时间处理 默认值和自动更新
datetime '1000-01-01 00:00:00'~'9999-12-31 23:59:59' - 高版本支持
timestamp '1970-01-01 00:00:01'UTC~'2038-01-19 03:14:07'UTC 从当前时区转换为UTC存储,并从UTC转回当前时区以供检索 支持

二、总结一下区别,主要是:

  • datetime的默认值为null,timestamp的默认值不为null,且为系统当前时间(current_timestatmp)。如果不做特殊处理,且update没有指定该列更新,则默认更新为当前时间。
  • datetime占用8个字节,timestamp占用4个字节。timestamp利用率更高。
  • 二者存储方式不一样,对于timestamp,在存储时从当前时区转换为UTC存储,检索时从UTC转回当前时区以供检索。但对于datetime,基本上存什么是什么。
  • 二者范围不一样。timestamp范围:‘1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’;datetime范围:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。原因是,timestamp占用4字节,能表示最大的时间毫秒为2的31次方减1,也就是2147483647,换成时间刚好是2038-01-19 03:14:07.999999。

三、设置默认值和自动更新策略的方式:

DEFAULT关键字设置默认值;

ON UPDATE 关键字设置更新策略;两者互相独立。

-- 创建测试表
CREATE TABLE mytest (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
createTime DATETIME DEFAULT CURRENT_TIMESTAMP ,
updateTime DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);

如果是更新已有字段使用如下语句

 alter table tableName modify column createTime DATETIME DEFAULT CURRENT_TIMESTAMP;
alter table tableName modify column updateTime DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

测试

-- 检测默认值,插入测试数据
-- 可以看到插入数据自动给createTime设置的默认时间的当前时间,updateTime为最后一次更新的时间
INSERT into mytest(`username`,`password`) VALUES ("root","root");

-- 检测自动更新,更新某条数据
-- 当修改数据时,updateTime自动更新为当前时间
update mytest set username = "admin" where id = 1;

MySQL5.6版本之后设置DATETIME类型自动更新的更多相关文章

  1. MySQL的timestamp类型自动更新问题

    今天建了一个表,里面有一个列是timestamp类型,我本意是在数据更新时,这个字段的时间能自动更新.岂知对这个类型的值还不甚了解,导致出错.发现这个字段只是在这行数据建立的时候有值,在更新的却无变化 ...

  2. sqlserver数据库里怎样设置datetime类型的小数位数为3位

    要用datetime2(7)这种类型!将7改为3就行了

  3. CentOS7安全设置 yum-cron系统自动更新,firewalld防火墙简单使用

    PermitRootLogin nosystemctl restart sshd.service; yum -y install firewalld; systemctl start firewall ...

  4. wx 设置监测并自动更新

    checkUpdate(){ console.log('----->>checkVersionUpadte') const updateManager = wx.getUpdateMana ...

  5. Mysql 数据库date, datetime类型设置0000-00-00默认值(default)报错问题

    Mysql 数据库date, datetime类型设置0000-00-00默认值报错问题 现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00&q ...

  6. nvidia驱动自动更新版本后问题解决 -- failed to initialize nvml: driver/library version mismatch

    因为必须关闭桌面窗口, 建议另外一台电脑ssh连接操作 1. 卸载旧版本并关闭图形界面 sudo apt-get remove --purge nvidia-\* sudo service light ...

  7. MySQL5.7版本sql_mode=only_full_group_by问题解决办法

    原因分析:MySQL5.7版本默认设置了 mysql sql_mode = only_full_group_by 属性,导致报错. 1.查看sql_mode SELECT @@sql_mode; 2. ...

  8. macaca运行报错之chrome-driver问题处理,关闭 Chrome 的自动更新

    由于chrome浏览器自动更新,导致 macaca运行报错,重新安装和更新chrome-driver 之后,还需要把chrome浏览器降级到50版本: 但是chrome会自动更新,所以需要禁止.找到这 ...

  9. C#实现之(自动更新)

    做开发的人,尤其是做客户端(C/S)系统开发的人都会遇到一个头疼的问题,就是软件的自动更新:系统发布后怎样自动的更新程序,在下有幸开发过一个自动更新程序,更新程序与任何宿主程序是完全独立的:只要在主程 ...

随机推荐

  1. Linux(Centos7)下redis5缓存服务集群分布式搭建

    注意:可以查看Redis官网查看集群搭建方式,连接如下 https://redis.io/topics/cluster-tutorial 集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器 ...

  2. Spring AOP 使用注解定义切面(转载)

    原文地址:http://www.jianshu.com/p/6f40dddd71a5 1.定义切面 下面我们就来定义一场舞台剧中观众的切面类Audience: package com.spring.a ...

  3. DataWorks参数配置

    https://help.aliyun.com/document_detail/30281.html?spm=a2c6h.13066369.0.0.7bef69daI5ajKt

  4. Python:JPG->JPEG

    由于要在网页上使用图片渐进加载,所以需要将其他图片格式转化为JPEG格式 考虑使用python来实现批量转换 需要先安装pillow: pip  install pillow 我这里将JPG格式转化为 ...

  5. 基于注解的IOC配置

    1 明确 注解配置和XML配置要实现的功能都是一样的,都是要降低程序间的耦合.只是配置的形式不一样. 关于实际的开发中到底是使用XML还是注解,每家公司有着不同的习惯.具体问题具体分析. 2 环境搭建 ...

  6. Hadoop中配置环境后重启失效解决方法

    Ubuntu下设置环境变量有三种方法,一种用于当前终端,一种用于当前用户,一种用于所有用户: 一:用于当前终端: 在当前终端中输入:export PATH=$PATH:<路径> 不过上面的 ...

  7. 【NOIP2017提高组模拟6.27】C

    题目 蜘蛛精大爷是世界上最爷的爷,ta的图论专著<蜘蛛精大爷教你学做人OI之图论>正在热卖,只要233美元一本,每人限购一本......在某弱的不懈要求下,ta给某弱出了一道题,然而某弱太 ...

  8. 获取树莓派ip地址的方法

    1.有显示器​ (1)鼠标停留在屏幕右上角网络图标上,2-3秒会显示网络连接信息​(2) 图形界面下打开终端运行ifconfig命令 2.登录路由器​查看名叫raspberry的设备 3.电脑上运行命 ...

  9. Django orm self 自关联表

    自关联模型 自关联模型就是表中的某一列,关联了这个表的另外一列.最典型的自关联模型就是地区表.省市县都在一张表里面.省的pid为null,市的pid为省的pid,县的pid为市的ID. class A ...

  10. 获取当前国家与ip地址

    JS获取当前国家示例: <script src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js"& ...