天天看點

mysql的日期存儲字段比較int,datetime,timestamp差別

1、首先是我們分析datetime長度是8個位元組,INT的長度是4個位元組,存儲空間上比datatime少。

2、int存儲索引的空間也比datetime少,排序效率高,查詢速度比較快。

3、友善計算,unix時間戳有點就是友善計算。

總結了一下timestamp和datetime的差別:

1、timestamp有範圍限制1970 ~ 2037

2、timestamp支援default current_timestamp 來設定預設自動目前時間

3、timestamp支援on update current_timestamp 來設定更新時自動目前時間

4、timestamp時區相關,存儲時以UTC時間保持,查詢時轉換為目前時區,

即如果在東8區的08:00:00分儲存的資料,在東9區看到的是09:00:00

5、timestamp 4個位元組存儲(實際上就是int),datetime 8個位元組

6、如果timestamp的值超出範圍,mysql不會報錯

7、如果是自動更新模式,手動修改資料導緻timestamp字段更新

8、同時有兩個timestamp字段預設值為current_timestamp會報錯

9、如果mysql在maxdb模式下,timestamp等同于datetime,也就是說timestamp

受伺服器模式影響

網上還有還一個TIMESTAMP 和INT比較的例子,timestamp效率比int不會差,而且timestamp有自動更新功能

相同點

TIMESTAMP列的顯示格式與datetime列相同。

換句話說,顯示寬度固定在19字元,并且格式為YYYY-MM-DD HH:MM:SS。

不同點

datetime

以”YYYY-MM-DDHH:MM:SS”格式檢索和顯示datetime值。支援的範圍為”1000-01-01 00:00:00″到”9999-12-31 23:59:59″

TIMESTAMP值不能早于1970或晚于2037

TIMESTAMP

1、4個位元組儲存(Time stamp value is stored in 4 bytes)

2、值以UTC格式儲存( it stores the number of milliseconds)

3、時區轉化 ,存儲時對目前的時區進行轉換,檢索時再轉換回目前的時區。

1、8個位元組儲存(8 bytes storage)

2、實際格式儲存(Just stores what you have stored and retrieves thesamething which you have stored.)

3、與時區無關(It has nothing to deal with the TIMEZONEandConversion.)

朝朝暮暮.

繼續閱讀