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、時區轉化 ,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。
datetime
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.)


免責聲明!

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



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