博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于timestamp的自动更新
阅读量:5322 次
发布时间:2019-06-14

本文共 931 字,大约阅读时间需要 3 分钟。

最近笔者在“温习TP框架”(其实就是不会然后抓紧时间啃),从最简单Blog开始做起,以前学习的时候是跟着教程,用time()函数获取当前时间戳,然后用int型数据来存储。这一次我突然想用Mysql内置的时间类型的数据——timestamp。

Mysql中常用到的除了timestamp之外还有datetime,我们先来比较一下这两个的区别:

  • timestamp占用的存储空间为4个字节,所以它能表示的时间范围为1970.1.1 08:00:01~2038.01.19 11:14:07,这个范围比较小,容易出现超出的情况。
  • datetime占用的存储空间为8个字节,所以它能表示的时间范围为1000.01.01 00:00:00~9999.12.31 23:59:59,这个时间范围完全够用了。

其实timestamp这个时间范围目前也是够用的,而且我也只是来学习的,所以我就选择了这个数据类型。然而后来我发现我在修改表中数据的时候时间并没有自动更新,这就比较奇怪了,我当时的sql代码是这样的:

date timestamp not null default current_timestamp;

后来一顿google发现了问题所在,如果这个数据属性没有加上default current_timestamp的话,就会默认创建数据时获取当前时间且数据更新时更新时间,然而加上了default current_timestamp则必须要再加上on update current_timestamp才能自动更新时间。

总结如下:

  • 如果该列属性default current_timestamp 和 on update语句都有,则初始值为当前时间并自动更新
  • 如果该列属性default current_timestamp 和 on update语句都没有,则默认初始值为当前时间并自动更新
  • 如果该列属性只有default current_timestamp,那么初始值当前时间且时间不会自动更新
  • 如果该列属性只有on update语句,则初始值为0,会自动更新时间

转载于:https://www.cnblogs.com/skyhive/p/6400973.html

你可能感兴趣的文章
套接口和I/O通信
查看>>
阿里巴巴面试之利用两个int值实现读写锁
查看>>
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
jequery动态创建form
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
第六次java作业
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
Jenkins执行批处理文件失败
查看>>
深入理解jQuery框架-框架结构
查看>>
[7.14NOIP模拟4]通讯 题解 (Tarjan缩点+贪心)
查看>>
YUI3自动加载树实现
查看>>
python知识思维导图
查看>>
当心JavaScript奇葩的逗号表达式
查看>>
App Store最新审核指南(2015年3月更新版)
查看>>
织梦MIP文章内容页图片适配百度MIP规范
查看>>
点击复制插件clipboard.js
查看>>