萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL中CURRENT_TIMESTAMP數據類型詳解

MySQL中CURRENT_TIMESTAMP數據類型詳解

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只會更新第一個。

copyright © 萬盛學電腦網 all rights reserved