一般應(yīng)用中,我們用timestamp,datetime,int類(lèi)型來(lái)存儲(chǔ)時(shí)間格式:
int(對(duì)應(yīng)javaBean中的Integer或int)
1. 占用4個(gè)字節(jié)
2. 建立索引之后,查詢(xún)速度快
3. 條件范圍搜索可以使用使用between
4. 不能使用mysql提供的時(shí)間函數(shù)
結(jié)論:適合需要進(jìn)行大量時(shí)間范圍查詢(xún)的數(shù)據(jù)表
datetime(javaBean中用Date類(lèi)型)
1. 占用8個(gè)字節(jié)
2. 允許為空值,可以自定義值,系統(tǒng)不會(huì)自動(dòng)修改其值。
3. 實(shí)際格式儲(chǔ)存(Just stores what you have stored and retrieves the same thing which you have stored.)
4. 與時(shí)區(qū)無(wú)關(guān)(It has nothing to deal with the TIMEZONE and Conversion.)
5. 不可以設(shè)定默認(rèn)值,所以在不允許為空值的情況下,必須手動(dòng)指定datetime字段的值才可以成功插入數(shù)據(jù)。
6. 可以在指定datetime字段的值的時(shí)候使用now()變量來(lái)自動(dòng)插入系統(tǒng)的當(dāng)前時(shí)間。
結(jié)論:datetime類(lèi)型適合用來(lái)記錄數(shù)據(jù)的原始的創(chuàng)建時(shí)間,因?yàn)闊o(wú)論你怎么更改記錄中其他字段的值,datetime字段的值都不會(huì)改變,除非你手動(dòng)更改它。
timestamp(javaBean中用Date或Timestamp類(lèi)型)
1. 占用4個(gè)字節(jié)
2. 允許為空值,但是不可以自定義值,所以為空值時(shí)沒(méi)有任何意義。
3. TIMESTAMP值不能早于1970或晚于2037。這說(shuō)明一個(gè)日期,例如'1968-01-01',雖然對(duì)于DATETIME或DATE值是有效的,但對(duì)于TIMESTAMP值卻無(wú)效,如果分配給這樣一個(gè)對(duì)象將被轉(zhuǎn)換為0。
4.值以UTC格式保存( it stores the number of milliseconds)
5.時(shí)區(qū)轉(zhuǎn)化 ,存儲(chǔ)時(shí)對(duì)當(dāng)前的時(shí)區(qū)進(jìn)行轉(zhuǎn)換,檢索時(shí)再轉(zhuǎn)換回當(dāng)前的時(shí)區(qū)。
6. 默認(rèn)值為CURRENT_TIMESTAMP(),其實(shí)也就是當(dāng)前的系統(tǒng)時(shí)間。
7. 數(shù)據(jù)庫(kù)會(huì)自動(dòng)修改其值,所以在插入記錄時(shí)不需要指定timestamp字段的名稱(chēng)和timestamp字段的值,你只需要在設(shè)計(jì)表的時(shí)候添加一個(gè)timestamp字段即可,插入后該字段的值會(huì)自動(dòng)變?yōu)楫?dāng)前系統(tǒng)時(shí)間。
8. 以后任何時(shí)間修改表中的記錄時(shí),對(duì)應(yīng)記錄的timestamp值會(huì)自動(dòng)被更新為當(dāng)前的系統(tǒng)時(shí)間。
結(jié)論:timestamp類(lèi)型適合用來(lái)記錄數(shù)據(jù)的最后修改時(shí)間,因?yàn)橹灰愀牧擞涗浿衅渌侄蔚闹担瑃imestamp字段的值都會(huì)被自動(dòng)更新。
總結(jié)
以上就是本文關(guān)于解析MySQL中存儲(chǔ)時(shí)間日期類(lèi)型的選擇問(wèn)題的全部?jī)?nèi)容,感興趣的朋友可以參閱:mysql in語(yǔ)句子查詢(xún)效率慢的優(yōu)化技巧示例、MYSQL子查詢(xún)和嵌套查詢(xún)優(yōu)化實(shí)例解析、MySQL優(yōu)化之使用連接(join)代替子查詢(xún)等,有什么問(wèn)題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家。希望對(duì)大家有所幫助。
您可能感興趣的文章:- MySQL存儲(chǔ)時(shí)間類(lèi)型選擇的問(wèn)題講解
- 如何選擇合適的MySQL日期時(shí)間類(lèi)型來(lái)存儲(chǔ)你的時(shí)間
- 解決MySQL存儲(chǔ)時(shí)間出現(xiàn)不一致的問(wèn)題
- mysql獲取指定時(shí)間段中所有日期或月份的語(yǔ)句(不設(shè)存儲(chǔ)過(guò)程,不加表)
- MySQL中存儲(chǔ)時(shí)間的最佳實(shí)踐指南