MySQL timestamp和datetime字段的區別


1、表示范圍
datetime :'1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999'
timestamp:'1970-01-01 00:00:01.000000' to '2038-01-19 03:14:07.999999'
timestamp翻譯為漢語即"時間戳",它是當前時間到 Unix元年(1970年1月1日0時0分0秒)的秒數。
對於某些時間的計算,如果是以datetime的形式會比較困難,假如我是 1994-1-20 06:06:06 出生,現在的時間是 2016-10-1 20:04:50 ,那么要計算我活了多少秒鍾用 datetime 還需要函數進行轉換,但是 timestamp 直接相減就行。

2、時區問題
timestamp只占用4個字節,以utc的格式儲存,它會自動檢索當前時區並進行轉換
datetime 以8個字節存儲,不會進行時區檢索
也就是說,對於timestamp來說,如果儲存時的時區和檢索時的時區不一樣,那么拿出來的數據也不一樣。
對於datetime來說,存什么拿到的就是什么。
還有一個區別就是如果存進去的是NULL,timestamp會自動儲存當前時間,而 datetime會儲存 NULL。
MySQL允許的插入時間的格式:插入以下格式的數據,MySQL會自動處理
2016-10-01 20:48:59
2016#10#01 20/48/59
20161001204859

3、選擇
如果在時間上要超過Linux時間的,或者服務器時區不一樣的就建議選擇 datetime。
如果是想要使用自動插入時間或者自動更新時間功能的,可以使用timestamp。

注:
MySQL5.7也是支持datetime的自動更新的。
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,


免責聲明!

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



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