[轉]MySQL中timestamp數據類型的特點


原文地址:https://www.imooc.com/article/16158

在使用MySQL數據庫時有很多常見的誤解,其中使用int類型來保存日期數據會提高數據讀取的效率就是比較常見的一個誤解。通常情況下在選擇表中列的數據類型時我們要選擇能滿足存儲需要的,最小的數據類型,這大概就是大家喜歡使用int類型來保存時間數據的原因.因為INT類型只占用4個字節面datetime類型要占用8個字節,顯然INT要比datetime類型小很多,同時MySQL又提供了兩個非常好用的函數FROM_UNIXTIME() 和UNIX_TIMESTAMP(),使用這兩個函數可以方便的在INT和DATETIME類型之間進行轉換,但是使用INT類型存儲時間也給我們帶來了不少的麻煩。
首先,數據的可讀性比較差,我們在查看數據時不能直觀的看出時間列中記錄的一串整數所代表的時間.
其次,每次進行顯示時都要通過函數進行轉換,增加了數據使用的復雜成度。
那有沒有什么更好的方法來存儲日期數據呢?這就要用到我們標題中所說到的timestamp類型了,timestamp類型的特點如下:
. 存儲占用 4個字節,以年月日小時分秒的日期型式顯示
. 存儲范圍'1970-01-01 00:00:01' to '2038-01-19 03:14:07'.
. 以UTC時區進行存儲,但是以系統當前時間進行顯示
. 可以在insert和update時把值自動更新為當前時間
由以上特點可以知道,timestamp存儲占用的空間和INT類型相同,實際上timestamp類型的數據在存儲時就是被保存成INT類型的數據來存儲的,這和我們使用INT來存儲日期時間數據可以說是完全一樣的。由於同樣是使用INT類型來保存數據,所以和INT類型一樣其存儲的時間范圍也是有限制的,這一點大家一定要注意,超過了這個范圍的日期數據建議大家使用datetime類型來保存。另外timestamp數據存儲時是以UTC時區來保存的,在顯示時MySQL會自動的把數據轉換為當前連接所對應時間來顯示。
可見,使用timestamp來存儲日期時間數據不但保證了數據類型的大小同INT類型一樣,同時可以顯示為日期時間格式,這在給我們使用數據帶來了很多的方便。所以強烈建議大家,使用timestamp類型來存儲日期數據而不要再使用INT類型了。如果你對MySQL其它的數據類型的使用特點和如何優化MySQL數據庫的查詢性能有興趣,也可以關注一下我的<MySQL數據庫架構設計與優化>這門課程,相信其中的內容一定會讓你滿意的。


免責聲明!

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



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