探討MySQL?保存日期用哪種數(shù)據(jù)類型
寫在前面
在設(shè)計數(shù)據(jù)庫表時不可避免的需要用到時間類型,到底選擇那種數(shù)據(jù)類型來表示時間是一個值的討論的問題,本文就一起來看下!
1:能用哪些數(shù)據(jù)類型
1:字符串:不要用,占用空間大,至少需要19個字節(jié),且無法使用日期相關(guān)函數(shù) 2:Datetime,可考慮 3:Timestamp,可考慮 4:整數(shù),可考慮
1.1:字符串
最好不要使用,占用空間大,且無法使用日期相關(guān)函數(shù)處理。
1.2:Datetime
與時區(qū)無關(guān),保存多少就是多少,最大表示9999年,占用空間5~8字節(jié)。
1.3:Timestamp
與時區(qū)有關(guān),占用空間4~7字節(jié),最大表示到2038年,且在所在行更新時,該字段會自動更新為最后一次更新的時間,像"修改時間"這類標識數(shù)據(jù)行修改時間的列可考慮選擇Timestamp數(shù)據(jù)類型,另外如果需要時區(qū)信息的話,也可以考慮使用該數(shù)據(jù)類型。
下面看下時區(qū)相關(guān)測試:
查看當前時區(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ū)的基礎(chǔ)上減了一個小時。
1.4:整數(shù)值
占用4個字節(jié),對占用空間敏感的業(yè)務(wù),可考慮使用,然后在程序中做轉(zhuǎn)換即可,或者使用MySQL函數(shù)轉(zhuǎn)換,如下使用MySQL函數(shù)轉(zhuǎn)換:
最后看下對比:
到此這篇關(guān)于MySQL 保存日期用哪種數(shù)據(jù)類型的文章就介紹到這了,更多相關(guān)MySQL 保存日期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
常用的SQL例句 數(shù)據(jù)庫開發(fā)所需知識
常用的SQL例句全部懂了,你的數(shù)據(jù)庫開發(fā)所需知識就夠用了2011-11-11MySQL解決數(shù)據(jù)導(dǎo)入導(dǎo)出含有外鍵的方案
這篇文章主要介紹了MySQL解決數(shù)據(jù)導(dǎo)入導(dǎo)出含有外鍵的情況,文中通過圖文結(jié)合的方式給大家講解的非常詳細,對大家解決問題有一定的幫助,需要的朋友可以參考下2024-11-11CentOS系統(tǒng)下如何設(shè)置mysql每天自動備份
備份是容災(zāi)的基礎(chǔ),是指為防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障導(dǎo)致數(shù)據(jù)丟失,而將全部或部分數(shù)據(jù)集合從應(yīng)用主機的硬盤或陣列復(fù)制到其它的存儲介質(zhì)的過程。本文將詳細介紹在CentOS系統(tǒng)下如何設(shè)置mysql每天自動備份,有需要的朋友們下面來一起看看吧。2016-10-10