mysql - 記錄開始時間和結(jié)束時間,表字段類型用timestamp還是datetime?
問題描述
mysql數(shù)據(jù)庫
時間都是近期的
問題解答
回答1:推薦題主看看這篇帖子,總結(jié)的不錯 選擇合適的 MySQL 日期時間類型來存儲你的時間
回答2:先搜索下
這里回復(fù)很詳細了
回答3:timestamp相比于datetime的優(yōu)勢:
所占空間小,timestamp占4字節(jié),而datetime占8字節(jié);
包含時區(qū)信息,如果日后修改了時區(qū)的話,timestamp所表示的時間會隨時區(qū)而變化,而datetime不會。
timestamp的劣勢:
只能表示從1970年到2038年的時間,而datetime不受此限制。
性能方面比較,不能一概而論,timestamp雖然是純數(shù)字,計算要快一些,但人類不可讀,還必須要經(jīng)過函數(shù)轉(zhuǎn)化,datetime是字符串類型,人類肉眼直接可讀,雖然計算加減乘除時要經(jīng)過一道轉(zhuǎn)化。
對于小應(yīng)用來講,空間不必考慮,性能不必考慮,時區(qū)都是北京時間,直接使用datetime就好了,不必糾結(jié)。
結(jié)論:永遠使用datetime來表示時間,決不使用timestamp,除非你有明確的理由,或者你知道自己在干什么。
回答4:兩種類型都是存放時間的,至于內(nèi)存占用和效率的區(qū)別在這里就不說了,一般應(yīng)用中這點差異也對你系統(tǒng)沒什么本質(zhì)上的影響,所以我的觀點是業(yè)務(wù)指向。datetime和timestamp比起來,timestamp類型的字段在數(shù)據(jù)庫記錄發(fā)生改變的時候(update)會自動更新這個字段的值,而datetime需要手動去設(shè)置才會改變。從業(yè)務(wù)角度進行篩選知道這點區(qū)別就行了,一般create time選datetime,update time選timestamp
