专业只做数据库实训和认证的品牌机构

微信公众号新浪微博
免费咨询电话:400-0909-964
当前位置: 网站首页 > MySQL培训 > MySQL课程 > MySQL培训课程:timestamp自动记录数据的改变时间

MySQL培训课程:timestamp自动记录数据的改变时间

文章来源: 更新时间:2016/7/19 16:18:13

在线老师点击咨询:

最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!

我要咨询

MySQL培训课程:timestamp自动记录数据的改变时间,timestamp列类型提供一种类型,timestamp值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。你可以使用它自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果你有多个timestamp列,只有第一个自动更新。

自动更新第一个timestamp列在下列任何条件下发生:

`列没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。

` 列没有明确地在一个UPDATE语句中指定且一些另外的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起timestamp列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)

`你明确地设定timestamp列为NULL.

除第一个以外的timestamp列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。

例如,创建如下的表:

MySQL> CREATE TABLE student

-> (

-> id int,

-> name char(16),

-> english tinyint,

-> chinese tinyint,

-> history tinyint,

-> time timestamp

-> );

向表中插入记录,可以查看效果:

MySQL> INSERT student(id,name,englisht,Chinese,history) VALUES(11,”Tom”,66,93,67);

查看记录的存储情况:

MySQL> SELECT * FROM student;

+------+---------+---------+---------+---------+----------------+

| id | name | english | chinese | history | time |

+------+---------+---------+---------+---------+----------------+

| 11 | Tom | 66 | 93 | 67 | 20010220123335 |

+------+---------+---------+---------+---------+----------------+

你可以看到time列纪录下了数据录入时的时间值。如果你更新改记录,在查看操作的结果:

MySQL> UPDATE student SET english=76 WHERE id=11;

MySQL> SELECT * FROM student;

+------+------+---------+---------+---------+----------------+

| id | name | english | chinese | history | time |

+------+------+---------+---------+---------+----------------+

| 11 | Tom | 76 | 93 | 67 | 20010220125736 |

+------+------+---------+---------+---------+----------------+

可以清楚的看到,time列的时间被自动更改为修改记录的时间。

有时候你希望不更改任何值,也能打到修改timestamp列的值,这时只要设置该列的值为NULL,MySQL就可以自动更新timestamp列的值:

MySQL> UPDATE student SET time=NULL WHERE id=11;

MySQL> select * from student where id=11;

+------+------+---------+---------+---------+----------------+

| id | name | english | chinese | history | time |

+------+------+---------+---------+---------+----------------+

| 11 | Tom | 76 | 93 | 67 | 20010220130517 |

+------+------+---------+---------+---------+----------------+

通过明确地设置希望的值,你可以设置任何timestamp列为不同于当前日期和时间的值,即使对第一个timestamp列也是这样。例如,如果,当你创建一个行时,你想要一个timestamp被设置到当前的日期和时间,但在以后无论何时行被更新时都不改变,你可以使用这样使用:

`让MySQL在行被创建时设置列,这将初始化它为当前的日期和时间。

`当你执行随后的对该行中其他列的更改时,明确设定timestamp列为它的当前值。

例如,当你在修改列时,可以把原有的值付给timestamp列:

MySQL> UPDATE student SET english=66,time=time WHERE id=11;

MySQL> select * from student where id=11;

+------+------+---------+---------+---------+----------------+

| id | name | english | chinese | history | time |

+------+------+---------+---------+---------+----------------+

| 11 | Tom | 66 | 93 | 67 | 20010220130517 |

+------+------+---------+---------+---------+----------------+

另一方面,你可能发现,当你想要实现上面这个效果时,很容易用一个你用NOW()初始化的DATETIME列然后不再改变它,这样也许直接些。 但是,timestamp列的以后好处是存储要求比较小,节省空间。timestamp的存储需求是4字节,而DATETIME列的存储需求是8字节。

本文地址:http://www.cuug.com.cn/mysql/kecheng/12516590630.html 转载请注明!


在线预约 抢先报名 获取课程排期

Oracle培训机构

金牌讲师<>

冉乃纲-老师CUUG金牌讲师
冉老师 CUUG金牌讲师 Oracle及RedHat高级讲师、Unix/Linux 资深专家...[详细了解老师]

免费咨询上课流程 客服在线中

陈卫星-老师CUUG金牌讲师
陈老师 CUUG金牌讲师 精通Oracle管理、备份恢复、性能优化 11年Ora...[详细了解老师]

免费咨询上课流程 客服在线中

选学校如何选择适合自己的学校

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。多年来,以提高教学质量为本,强调素质教育,积极引进、消化国外的新技术,有效的结合中国....[详情]

一站式服务(从入学到就业一帮到底)

入学

学习

就业

实操

食宿
地址:北京市海淀区北清路164号28-38号院
课程咨询:010-59426307 010-59426319 400-0909-964
企业服务:137 1818 8639(陈经理)
部分信息来源于网络,如有错误请联系指正!
版权所有@北京神脑资讯技术有限公司 (CUUG,中国UNIX用户协会) Copyright 2016 ALL Rights Reserved 京ICP备11008061号-1