mysql之TIMESTAMP(時間戳)用法詳解


timestamp數據類型是一個比較特殊的數據類型,他可以自動在你不使用程序更新情況下只要你更新了記錄timestamp會自動更新時間.

通常表中會有一個Create date 創建日期的字段,其它數據庫均有默認值的選項。MySQL也有默認值timestamp,但在MySQL中,不僅是插入就算是修改也會更新timestamp的值!

這樣一來,就不是創建日期了,當作更新日期來使用比較好!

 

一、TIMESTAMP的變體

TIMESTAMP時間戳在創建的時候可以有多重不同的特性,如:

1.在創建新記錄和修改現有記錄的時候都對這個數據列刷新:

?
1
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

2.在創建新記錄的時候把這個字段設置為當前時間,但以后修改時,不再刷新它:

?
1
TIMESTAMP DEFAULT CURRENT_TIMESTAMP

3.在創建新記錄的時候把這個字段設置為0,以后修改時刷新它:

?
1
TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

4.在創建新記錄的時候把這個字段設置為給定值,以后修改時刷新它:

?
1
TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss' ON UPDATE CURRENT_TIMESTAMP

MySQL目前不支持列的Default 為函數的形式,如達到你某列的默認值為當前更新日期與時間的功能,你可以使用TIMESTAMP列類型,下面就詳細說明TIMESTAMP列類型
 
二、TIMESTAMP列類型

TIMESTAMP值可以從1970的某時的開始一直到2037年,精度為一秒,其值作為數字顯示。
TIMESTAMP值顯示尺寸的格式如下表所示:

?
1
2
3
4
5
6
7
8
9
10
+ ---------------+----------------+
| 列類型    | 顯示格式    |
| TIMESTAMP (14) | YYYYMMDDHHMMSS | 
| TIMESTAMP (12) | YYMMDDHHMMSS  |
| TIMESTAMP (10) | YYMMDDHHMM   |
| TIMESTAMP (8) | YYYYMMDD    |
| TIMESTAMP (6) | YYMMDD     |
| TIMESTAMP (4) | YYMM      |
| TIMESTAMP (2) | YY       |
+ ---------------+----------------+

“完整”TIMESTAMP格式是14位,但TIMESTAMP列也可以用更短的顯示尺寸,創造最常見的顯示尺寸是6、8、12、和14。
你可以在創建表時指定一個任意的顯示尺寸,但是定義列長為0或比14大均會被強制定義為列長14。
列長在從1~13范圍的奇數值尺寸均被強制為下一個更大的偶數。
 
列如:

 
 
?
1
2
3
4
5
定義字段長度   強制字段長度
TIMESTAMP (0) ->  TIMESTAMP (14)
TIMESTAMP (15)->  TIMESTAMP (14)
TIMESTAMP (1) ->  TIMESTAMP (2)
TIMESTAMP (5) ->  TIMESTAMP (6)

1.雖然你建表時定義了列TIMESTAMP(8),但在你進行數據插入與更新時TIMESTAMP列實際上保存了14位的數據(包括年月日時分秒),只不過在你進行查詢時MySQL返回給你的是8位的年月日數據。如果你使用ALTER TABLE拓寬一個狹窄的TIMESTAMP列,以前被“隱蔽”的信息將被顯示。

2.同樣,縮小一個TIMESTAMP列不會導致信息失去,除了感覺上值在顯示時,較少的信息被顯示出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM