当前位置:首页 > Mysql教程 > 列表

MySQL中CURRENT_TIMESTAMP数据类型详解

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-08 11:11:31 浏览: 评论:0 

MySQL中CURRENT_TIMESTAMP数据类型会自动根据UPDATE 和INSERT 到当前的时间,这样我们在保存或更新数据时就不需要现插入一个time的.

1.MySQL 获得当前时间戳函数:current_timestamp, current_timestamp(),代码如下:

  1. mysql> select current_timestampcurrent_timestamp(); 
  2.  
  3. +---------------------+---------------------+ 
  4. current_timestamp | current_timestamp() | 
  5. +---------------------+---------------------+ 
  6. | 2008-08-09 23:22:24 | 2008-08-09 23:22:24 | 
  7. +---------------------+---------------------+ 

例,MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样.

1、自动UPDATE 和INSERT 到当前的时间,表:

  1. ——————————— 
  2. Table   Create Table                                                                         
  3. ——————————————————————————————- 
  4.  
  5. t1      CREATE TABLE `t1` (                                                                  
  6.           `p_c` int(11) NOT NULL,                                                           
  7.           `p_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP --phpfensi.com
  8.         ) ENGINE=InnoDB DEFAULT CHARSET=gb2312        

数据,代码如下:

  1. 1    2007-10-08 11:53:35 
  2. 2    2007-10-08 11:54:00 
  3. insert into t1(p_c) select 3; 
  4. update t1 set p_c = 2 where p_c = 5; 

数据,代码如下:

  1. 1    2007-10-08 11:53:35 
  2. 5    2007-10-08 12:00:37 
  3. 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只会更新第一个.

Tags: CURRENT_TIMESTAMP MySQL数据类型

分享到: