MySQL中CURRENT_TIMESTAMP数据类型会自动根据UPDATE 和INSERT 到当前的时间哦,这样我们在保存或更新数据时就不需要现插入一个time的。
例
1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()
代码如下 mysql> select current_timestamp, current_timestamp();
+---------------------+---------------------+ | current_timestamp | current_timestamp() | +---------------------+---------------------+ | 2008-08-09 23:22:24 | 2008-08-09 23:22:24 | +---------------------+---------------------+
例
MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样。
1、自动UPDATE 和INSERT 到当前的时间: 表: ——————————— Table Create Table ——————————————————————————————-
代码如下 t1 CREATE TABLE `t1` ( `p_c` int(11) NOT NULL, `p_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
数据:
代码如下 1 2007-10-08 11:53:35 2 2007-10-08 11:54:00 insert into t1(p_c) select 3; update t1 set p_c = 2 where p_c = 5;
数据:
代码如下 1 2007-10-08 11:53:35 5 2007-10-08 12:00:37 3 2007-10-08 12:00:37
2、自动INSERT 到当前时间,不过不自动UPDATE。
总结
1.第一次插入时记录一次时间戳 2.每次更新都更新时间戳 3.只记录简要时间,比如Date 如果是第一种和第二种情况,使用timestamp相比datetime要更为方便些。timestamp默认值有三种:
■无 ■NULL ■NOT NULL DEFAULT CURRENT_TIMESTAMP ■NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 其中,
■CURRENT_TIMESTAMP - 当更新此条记录时,时间戳不会改变 ■CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP - 当更新此条记录时,时间戳将会改变,变为最新时间 设置CURRENT_TIMESTAMP默认值后,插入记录还是更新记录都不需要维护该字段,该字段完全由MySQL维护,就像AutoIncrement字段一样,但如果使用上文设置的datetime字段,则需要手动构造时间更新,比如类似now()等。
对CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,有个特殊情况,假如你更新的字段值(UPDATE)没有变化时,MySQL将会忽略更新操作,所以,时间戳也不会改变。另外,如果有多个CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP列,那么MySQL只会更新第一个。
原文链接:http://www.45it.com/database/201305/35042.htm