PostgreSQL 中 timestamp 和 timestamptz

首先直接說結(jié)論, timestamp 不帶時(shí)區(qū)信息,timestamptz 帶有時(shí)區(qū)信息。
insert 數(shù)據(jù)的時(shí)候,timestamp 不會(huì)攜帶時(shí)區(qū)信息,timestamptz 會(huì)攜帶 當(dāng)前會(huì)話 使用的時(shí)區(qū)信息

在查詢的時(shí)候如果時(shí)區(qū)沒有改變,則查詢結(jié)果一樣。
如果 會(huì)話使用的時(shí)區(qū)數(shù)據(jù)保存的時(shí)區(qū)1??(也就是插入數(shù)據(jù)的時(shí)候使用的時(shí)區(qū),不手動(dòng)設(shè)置時(shí)區(qū)的話就是配置文件中的時(shí)區(qū))不同的時(shí)候, timestamp 查詢到的時(shí)間不變,timestamptz 查詢到的時(shí)間,會(huì)根據(jù)時(shí)區(qū)差自動(dòng)改變

從官方手冊(cè)時(shí)間類型部分,能找到這樣一句話

SQL要求只寫timestamp等效于timestamp without time zone,并且PostgreSQL?鼓勵(lì)這種行為。timestamptz被接受為timestamp with time zone的一種簡(jiǎn)寫,這是一種PostgreSQL?的擴(kuò)展。
摘錄來自
PostgreSQL 13.1 手冊(cè)
PostgreSQL 全球開發(fā)組
https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewBook?id=0
此材料可能受版權(quán)保護(hù)。

以下是對(duì)上述的一些驗(yàn)證

為了驗(yàn)證時(shí)區(qū)問題,讓結(jié)果更容易理解,首先修改了配置文件中的時(shí)區(qū)配置,配置文件可以通過命令 show config_file 找到

# 將時(shí)區(qū)修改為 UTC 時(shí)區(qū),也就是0時(shí)區(qū)
log_timezone = 'Etc/UTC'
timezone = 'Etc/UTC'

新建一張測(cè)試表

create table test_time (
    id serial,
    t1 timestamp,
    t2 timestamptz
)

插入一條測(cè)試數(shù)據(jù),并查看當(dāng)前時(shí)區(qū)

image.png

這個(gè)時(shí)候插入的數(shù)據(jù)和查詢的數(shù)據(jù)沒有區(qū)別,只是 t2 字段后面多了 +00 表示時(shí)區(qū)

我們切換時(shí)區(qū)到上海,也就是 +8時(shí)區(qū) ,再次查詢,需要注意,這里通過會(huì)話設(shè)置的時(shí)區(qū)僅對(duì)當(dāng)前會(huì)話有效


image.png

這個(gè)時(shí)候我們可以看到 t1 時(shí)間沒有改變,而t2 時(shí)間,隨著時(shí)區(qū)增加了8個(gè)小時(shí)。

第二次驗(yàn)證

我們?cè)?+8 時(shí)區(qū)的基礎(chǔ)上,再次插入一條數(shù)據(jù)


image.png

然后我們重啟開啟一個(gè)新的回話,這樣回話的時(shí)區(qū)就變回了數(shù)據(jù)庫(kù)默認(rèn)的UTC時(shí)區(qū)


image.png

這個(gè)時(shí)候,我們會(huì)看到,原來的第一條數(shù)據(jù),查出來的結(jié)果又變成一樣的了。
而第二條數(shù)據(jù)的 t2 字段,時(shí)間已經(jīng)減小了8個(gè)小時(shí)

1?? 數(shù)據(jù)保存的時(shí)區(qū) 這個(gè)詞語的表述可能有問題,這里僅僅是為了方便理解。

?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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