關(guān)于數(shù)據(jù)庫(kù)存儲(chǔ)時(shí)間的一些思考

  1. 不要用字符串存儲(chǔ)日期
  2. DateTime和TimeStamp之間的選擇
    2.1 DateTime沒(méi)有時(shí)區(qū)信息
    2.2 DateTime類型耗費(fèi)更大的空間
  3. 數(shù)值型時(shí)間戳
  4. 總結(jié)

1. 不要用字符串存儲(chǔ)日期

字符串存儲(chǔ)存在的問(wèn)題:

  • 空間,字符串占用更大的空間
  • 效率,字符串存儲(chǔ)日期效率較低(逐個(gè)字符比對(duì)),無(wú)法用日期相關(guān)的 API 進(jìn)行計(jì)算和比較。

2. DateTime和TimeStamp之間的選擇

通常首選Timestamp

2.1 DateTime沒(méi)有時(shí)區(qū)信息

DateTime 類型是沒(méi)有時(shí)區(qū)信息的(時(shí)區(qū)無(wú)關(guān)),DateTime 類型保存的時(shí)間都是當(dāng)前會(huì)話所設(shè)置的時(shí)區(qū)對(duì)應(yīng)的時(shí)間。所以當(dāng)時(shí)區(qū)更換之后,比如服務(wù)器更換地址或者更換客戶端連接時(shí)區(qū)設(shè)置的話,就會(huì)導(dǎo)致從數(shù)據(jù)庫(kù)中讀出的時(shí)間錯(cuò)誤。

Timestamp 和時(shí)區(qū)有關(guān)。Timestamp 類型字段的值會(huì)隨著服務(wù)器時(shí)區(qū)的變化而變化,自動(dòng)換算成相應(yīng)的時(shí)間,也就是說(shuō)在不同時(shí)區(qū),查詢到同一個(gè)條記錄此字段的值會(huì)不一樣。

一些關(guān)于MySQL時(shí)區(qū)設(shè)置一個(gè)常用sql命令

# 查看當(dāng)前會(huì)話時(shí)區(qū)
SELECT @@session.time_zone;
# 設(shè)置當(dāng)前會(huì)話時(shí)區(qū)
SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
# 數(shù)據(jù)庫(kù)全局時(shí)區(qū)設(shè)置
SELECT @@global.time_zone;
# 設(shè)置全局時(shí)區(qū)
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';

2.2 DateTime類型耗費(fèi)更大的空間

Timestamp 只需要使用 4 個(gè)字節(jié)的存儲(chǔ)空間,但是 DateTime 需要耗費(fèi) 8 個(gè)字節(jié)的存儲(chǔ)空間。但是,這樣同樣造成了一個(gè)問(wèn)題,Timestamp 表示的時(shí)間范圍更小。

  • DateTime :1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
  • Timestamp: 1970-01-01 00:00:01 ~ 2037-12-31 23:59:59

3. 數(shù)值型時(shí)間戳

有時(shí)也會(huì)用 int 或者 bigint 類型的數(shù)值也就是時(shí)間戳來(lái)表示時(shí)間。

這種存儲(chǔ)方式的具有 Timestamp 類型的所具有一些優(yōu)點(diǎn),并且使用它的進(jìn)行日期排序以及對(duì)比等操作的效率會(huì)更高,跨系統(tǒng)也很方便,畢竟只是存放的數(shù)值。缺點(diǎn)也很明顯,就是數(shù)據(jù)的可讀性太差了,你無(wú)法直觀的看到具體時(shí)間。

數(shù)據(jù)型時(shí)間戳在數(shù)據(jù)庫(kù)中實(shí)際操作

4. 總結(jié)

各種日期類型對(duì)比
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容