Mysql的時間字段貌似有各種選擇,像一般的情況(我也是)下就是用INT型來表示,直接存儲時間戳。但是我知道在Mysql里至少還有TIMESTAMP和DATETIME型可以用來存儲時間,我不知道這三者在使用上各有什么區別,在使用場景上需要怎么考慮,特別是它們在索引或者查詢速度上有區別嗎?
2 回答

慕田峪7331174
TA貢獻1828條經驗 獲得超13個贊
首先 DATETIM和TIMESTAMP類型所占的存儲空間不同,前者8個字節,后者4個字節,這樣造成的后果是兩者能表示的時間范圍不同。前者范圍為1000-01-01 00:00:00 ~ 9999-12-31 23:59:59,后者范圍為1970-01-01 08:00:01到2038-01-19 11:14:07。所以可以看到TIMESTAMP支持的范圍比DATATIME要小,容易出現超出的情況.
其次,TIMESTAMP類型在默認情況下,insert、update 數據時,TIMESTAMP列會自動以當前時間(CURRENT_TIMESTAMP)填充/更新。
第三,TIMESTAMP比較受時區timezone的影響以及MYSQL版本和服務器的SQL MODE的影響
所以一般來說,我比較傾向選擇DATETIME,至于你說到索引的問題,選擇DATETIME作為索引,如果碰到大量數據查詢慢的情況,也可以分區表解決。

蝴蝶不菲
TA貢獻1810條經驗 獲得超4個贊
兩者都是時間類型字段,格式都一致。兩者主要有以下四點區別:
最主要的區別-受時區影響不同。
timestamp
會跟隨設置的時區變化而變化,而datetime
保存的是絕對值不會變化。
添加回答
舉報
0/150
提交
取消