1. MySQL 獲得當前時間戳函數:current_timestamp, current_timestamp()
代碼如下 | |
mysql> select current_timestamp, current_timestamp(); +---------------------+---------------------+ |
例
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()等。
例:
<if test="updatetime != null"> updatetime = now() </if>
對CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,有個特殊情況,假如你更新的字段值(UPDATE)沒有變化時,MySQL將會忽略更新操作,所以,時間戳也不會改變。另外,如果有多個CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP列,那么MySQL只會更新第一個。