探討MySQL?保存日期用哪種數(shù)據(jù)類型
寫在前面
在設計數(shù)據(jù)庫表時不可避免的需要用到時間類型,到底選擇那種數(shù)據(jù)類型來表示時間是一個值的討論的問題,本文就一起來看下!
1:能用哪些數(shù)據(jù)類型
1:字符串:不要用,占用空間大,至少需要19個字節(jié),且無法使用日期相關函數(shù) 2:Datetime,可考慮 3:Timestamp,可考慮 4:整數(shù),可考慮
1.1:字符串
最好不要使用,占用空間大,且無法使用日期相關函數(shù)處理。
1.2:Datetime
與時區(qū)無關,保存多少就是多少,最大表示9999年,占用空間5~8字節(jié)。
1.3:Timestamp
與時區(qū)有關,占用空間4~7字節(jié),最大表示到2038年,且在所在行更新時,該字段會自動更新為最后一次更新的時間,像"修改時間"這類標識數(shù)據(jù)行修改時間的列可考慮選擇Timestamp數(shù)據(jù)類型,另外如果需要時區(qū)信息的話,也可以考慮使用該數(shù)據(jù)類型。
下面看下時區(qū)相關測試:
查看當前時區(qū)
創(chuàng)建數(shù)據(jù)
CREATE TABLE `time_zone_test` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `date_time` datetime DEFAULT NULL, `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO time_zone_test(date_time,time_stamp) VALUES(NOW(),NOW());
查看數(shù)據(jù)
修改時區(qū)為東7區(qū)在查看時間
SET time_zone='+7:00';
可以看到timestamp的字段在原來東八區(qū)的基礎上減了一個小時。
1.4:整數(shù)值
占用4個字節(jié),對占用空間敏感的業(yè)務,可考慮使用,然后在程序中做轉(zhuǎn)換即可,或者使用MySQL函數(shù)轉(zhuǎn)換,如下使用MySQL函數(shù)轉(zhuǎn)換:
最后看下對比:
到此這篇關于MySQL 保存日期用哪種數(shù)據(jù)類型的文章就介紹到這了,更多相關MySQL 保存日期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
常用的SQL例句 數(shù)據(jù)庫開發(fā)所需知識
常用的SQL例句全部懂了,你的數(shù)據(jù)庫開發(fā)所需知識就夠用了2011-11-11CentOS系統(tǒng)下如何設置mysql每天自動備份
備份是容災的基礎,是指為防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障導致數(shù)據(jù)丟失,而將全部或部分數(shù)據(jù)集合從應用主機的硬盤或陣列復制到其它的存儲介質(zhì)的過程。本文將詳細介紹在CentOS系統(tǒng)下如何設置mysql每天自動備份,有需要的朋友們下面來一起看看吧。2016-10-10